akoya api error cases

📘

Notes:

Errors return as standardized FDX error codes. See Errors.

Data calls can be validated against the provider-specific Mikomo users and sample responses for payload structure and actual data elements.

Test caseTask(s)Expected result(s)
Try an invalid API call.Use /accounts-info endpoint with incorrect parameter detail instead of details.HTTP 400: Bad Request

Error payload:
{
   "code": 401,
   "message": "Invalid input"
}
Ensure that a recipient can’t access provider data without a subscription.Use /accounts-info endpoint with an incorrect id_token, even a valid token with another provider.HTTP 401: Unauthorized

Error payload:
{
   "code": 602,
   "message": "Customer not authorized"
}
Try the token of another user from the same provider.Have two valid end-user tokens.

Use the id_token for user 1 in an /accounts-info call with the query parameter accountIds set for an account for user 2.
HTTP 404: Not Found

Error payload:
{
   "code": 701,
   "message": "Account not found"
}
Try to get transactions without specifying the account.Use /transactions endpoint without the accountId path variable.HTTP 404: Not Found

Error payload:
{
   "code": 701,
   "message": "Account not found"
}
Try to get accounts or transactions with incorrect provider.Use /transactions endpoint without the providerId path variable.HTTP 400: Bad Request

Error payload:
{
   "code": 401,
   "message": "Invalid Input"
}
Try start and/or end dates that are not in the ISO8601 format.Use /transactions endpoint with startTime and endTime parameters with a string that is not ISO 8601 date format in UTC time zone.HTTP 400: Bad Request

Error payload:
{
   "code": 702,
   "message": "Invalid start or end date"
}
Try invalid dates.Use a date that is prior to available transaction history.HTTP 200: OK

Error payload:
{
   "transactions": []
}

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. In these cases, we’ve made Mikomo users that when used, will supply certain error codes and messages. One such user is mikomo_601. When data is requested for this user, the result will always be a 601 error. See: Mikomo Error testing.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Test caseTask(s)Expected result(s)
Try using a revoked ID token.1. Use error test case mikomo_601 to mimic this type of error.

2. Use error test case mikomo_602 to mimic this type of error.
1. HTTP 404: Not Found

Error payload:
{
   "code": 601,
   "message": "Customer not found"
}

2. HTTP 401: Unauthorized

Error payload:
{
   "code": 602,
   "message": "Customer not authorized"
}
Internal service errorUse error test case mikomo_500 to mimic this type of error.HTTP 500: Internal Server Error

Error payload:
{
   "code": 500,
   "message": "Internal server error"
}
Subsystem unavailableUse error test case mikomo_501 to mimic this type of error.HTTP 500: Internal Server Error

Error payload:
{
   "code": 501,
   "message": "Subsystem unavailable"
}

tips for using curl postman

cURL is a tool that allows you to make HTTP requests from the command line or through scripting. cURL makes use of libcurl, a URL transfer library. For more information, see:

curl.

Online documentation

In our online documentation, the curl command examples follow OSX/Linux/Unix command syntax.

If you are using Windows Command shell or PowerShell, there are a few notable differences in using these cURL snippets.

  • Windows does not support single quotes in Command shell. Nor does it support double quotes inside of double quotes. Each example must be edited:
    • Change single quotes to double quotes
    • If you need a double quote inside a double quote, escape the second set of double quotes, for instance: "{\"emailAddress\":\"user@example.com\"}"
  • Line continuation backslashes are used for readability and are not necessary. These backslashes may be deleted. Or, replace the backslash with a ^ in Command shell or ` in PowerShell.
OSX/Linux/UnixWindows cmd.exePowerShell
Line Continuation Character\^`
Quotes types'"'

Postman

For Postman, you may set the line continuation character and quote types by selecting settings in the code snippet box (in upper right panel of the app) then selecting the options appropriate to your OS. You may also turn off multi-line snippets which removes the line continuation backslash.

757

Postman: Open code snippet cURL settings


troubleshooting information to provide when contacting support

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


data recipient hub user manual change log

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

testing product responses the transactions endpoint

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

testing product responses the customer endpoint

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

data elements fdx v4 annuityaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

postman collection products

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

mikomo

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

testing authentication sad path tests

“Happy path” tests

Test caseTask(s)Expected result(s)
Successful creation of OAuth linkDirect end-user to the Mikomo login.End-user goes from your app to the provider login screen.
Valid loginGo through Mikomo’s authentication flow and reach the account selection screen.Successfully arrive at the account selection screen displaying all the user’s accounts.
Successful account selectionSelect the desired financial accounts.End-user’s accounts are selected without error.
Successful redirect to expected redirect_uriThe app/browser takes user to the success page.Successfully arrive at your app’s redirect URI.
Successful retrieval of authentication codeStore the authentication code.Authentication code is used for next step, retrieving tokens.
Successful token validationUse the Token endpoint to request refresh and ID tokens.Valid refresh_token and id_token tokens are returned. These tokens are associated with the Mikomo end-user who logged-in and the specified sandbox app, provider (Mikomo), and selected accounts.

“Sad path” tests

Test caseTask(s)Expected result(s)
Login failure (invalid connector)Provide an invalid providerId in the auth URL for connector (e.g. Mikomoo vs Mikomo).HTTP 400: Bad Request
Login failure (no connector)Provide connector without a value.HTTP 403: Forbidden

Possible: HTTP 200: OK. When this occurs, an Akoya login screen may appear and will not be usable for your end-user.
Login failure (invalid redirect_uri)1. Provide an empty redirect_uri.

2. Provide an incorrect redirect_uri.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid client_id)1. Provide an empty client_id.

2. Provide an incorrect client_id.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid response_type)Provide an empty response_type.HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_requests
Login failure (invalid scope)1. Provide an empty scope.

2. scope missing openid.
HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_scope
Login failure (invalid scope)scope missing offline_access.End-user login will be successful.

Initial token endpoint response will be missing refresh_token
Login failure (incorrect username/password)Enter incorrect user credentials.HTTP 401: Unauthorized

Receive an error message in the UI that the end-user’s username and/or password is incorrect.

hub manual my apps modifying your redirect uri

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


data elements fdx v4 investmenttransaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

balances

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

data elements fdx v4 pagemetadata

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

hub manual features

The Hub is Akoya's developer portal, allowing you to:

  • Register apps in our sandbox and production environments.
  • Request production access.
  • View and edit your application details such as:
    • client IDs (view only)
    • redirect URIs (view/edit)
    • client secrets (reset only)
    • email address(es) (view/edit)
  • Review and create subscriptions.
  • Manage team members.
  • See enabled Akoya products for each of your apps.
  • View supported Akoya products for each provider.
  • See release notes for the current release of the Hub.

The Hub also provides quick access to our documentation:


pagination

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


versioning content

📌

Akoya API versions are set in the path

Incremental changes in a version will be listed in release notes and maintain backward compatibility. The current Akoya version is Akoya API v2.

This guide outlines the Akoya API versioning approach and our goals in defining and supporting our users with any breaking changes created with API updates. We aim to limit breaking changes as much as possible to new API versions (a.k.a. major versions). This is achieved by only releasing non-breaking changes (a.k.a. backward compatible) to current API versions.

API major version timeline

Major releases will be communicated in advance to give our users time to understand upcoming changes. With a new major version release, the previous version will be automatically deprecated. Six months after deprecation, the previous version will be sunset. Once a version is sunset, it will no longer be available or supported.

When an API is marked as deprecated, we strongly recommend that you migrate to the latest version as soon as possible. New implementations of Akoya APIs should implement the latest (non-deprecated) major version.

Release timeline graph depicting v1 deprecating with v2 release, then sunset v1 6 months later

API release timeline

API versionRelease dateDeprecation dateSunset dateMigration guide
v1November 2, 2022May 2, 2023https://docs.akoya.com/v2/docs/migration-guide
v2November 2, 2022

Akoya APIs and breaking changes

We will increment API major version numbers for any non-backward compatible changes to an API. The following examples are principles to define breaking changes vs. non-breaking changes.

Examples of breaking (non-backward compatible) changes:

  • Changes to the URL or fundamental request/response associated with an endpoint
  • Removal, rename, or change to the type of a declared property
  • Removal, rename, or change to a data field
  • Removal or rename of APIs or API parameters
  • Addition of a required request header
  • Changes to an existing query parameter or addition of new mandatory request parameters

Examples of non-breaking (backward compatible) changes:

  • Addition of net-new data fields
  • Addition of properties that are nullable or have a default value
  • Addition of a member to an enumeration
  • Removal, rename, or change to the type of an open extension
  • Removal, rename, or change to the type of an annotation
  • Introduction of paging to existing collections
  • Addition or changes to error codes
  • Changes to the order of properties
  • Changes to the length or format of opaque strings, such as resource IDs

📘

Implementation note

A data recipient implementing Akoya APIs should expect to see non-breaking changes rolled out regularly through minor version updates. Please implement the Akoya APIs in a way that allow for these changes.


token flow token usage

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


openapi

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

requirements requirements

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


data elements fdx v4 accountdescriptor

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

timestamps

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

getting started change log

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

migration guide current support

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

how to work with akoya

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


timestamps requests

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

migration guide customer info customersv2provideridcurrent updated

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

postman collection testing our endpoints with postman

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

token flow refresh token lifetime

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo mikomo financial

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

data access network features

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

mikomo 1 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (Individual)
{ "accounts": [ { "accountId": "1755209824", "accountNumber": "*****2061", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739195", "accountNumber": "*****9277", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1755093543", "accountNumber": "*****2431", "accountType": "I", "description": "Cash Management-Individual", "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1781013604", "accountNumber": "*****5212", "accountType": "TODI", "description": "Individual - TOD", "displayName": "Individual - TOD", "nickname": "INDIVIDUAL - TOD" }, { "accountId": "1755208863", "accountNumber": "*****2071", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1777169449", "accountNumber": "*****9727", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739133", "accountNumber": "*****9275", "accountType": "I", "description": "Cash Management-Individual", "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1704739164", "accountNumber": "*****9276", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" } ] }
{ "accounts": { "investmentAccount": [ { "accountId": "1755209824", "accountNumber": "*****2061", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739195", "accountNumber": "*****9277", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1755093543", "accountNumber": "*****2431", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1781013604", "accountNumber": "*****5212", "accountType": "TODI", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 11067.73, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 2013.16, "positionType": "LONG", "purchasedPrice": 2, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.09, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 65.983 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 9054.57, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 9054.57 } ], "nickname": "INDIVIDUAL - TOD", "transactions": [ { "accountId": "1781013604", "amount": -10.82, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10.82, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1781013604", "amount": 10.82, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1781013604", "amount": -0.11, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.11, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1781013604", "amount": 0.11, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM FZFXX TO FCASH ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": -9043.64, "status": "POSTED", "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FCASH IS LIQUID ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 9043.64, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "description": " EXCHANGED TO FCASH ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "1755208863", "accountNumber": "*****2071", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1777169449", "accountNumber": "*****9727", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 125.32, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 125.32, "positionType": "LONG", "securityId": "316341304", "securityIdType": "CUSIP", "symbol": "FZFXX", "units": 125.32 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "1777169449", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "167178143", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1777169449", "amount": 0.03, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "167178142", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "167178141", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FZFXX IS LIQUID ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 125.14, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "442589127", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "description": " EXCHANGED TO FZFXX ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FZFXX", "transactionId": "442589126", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM SPAXX TO FZFXX ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -125.14, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "442589125", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "1704739133", "accountNumber": "*****9275", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1704739164", "accountNumber": "*****9276", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" } ] } }
{ "transactions": { "InvestmentTransaction": [ { "accountId": "1755209824", "amount": -10.82, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-30T04:00:00Z", "price": 1, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 10.82, "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 10.82, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-09-30T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": -0.11, "category": "DV", "commission": 0, "description": "REINVESTMENT CASH (315994103) (Cash)", "fees": 0, "investmentTransactionType": "REINVESTOFINCOME", "postedTimestamp": "2019-09-30T04:00:00Z", "price": 1, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0.11, "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 0.11, "category": "DV", "commission": 0, "description": "INTEREST EARNED CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-30T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED FROM FZFXX TO FCASH FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -9043.64, "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED TO FCASH IS LIQUID CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 9043.64, "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "commission": 0, "description": " EXCHANGED TO FCASH CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": -6.87, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-30T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 6.87, "subCategory": "BY", "symbol": "FZFXX", "transactionId": "1441520567", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": -7.08, "category": "DV", "commission": 0, "description": "REINVESTMENT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "REINVESTOFINCOME", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 7.08, "subCategory": "RN", "symbol": "FZFXX", "transactionId": "1441520566", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 7.08, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1441520565", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 6.87, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1441520564", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 45.4, "category": "IA", "commission": 0, "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "PURCHASETOCLOSE", "postedTimestamp": "2019-08-26T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -45.4, "subCategory": "SL", "symbol": "FZFXX", "transactionId": "65853201", "transactionTimestamp": "2019-08-26T04:00:00Z" }, { "accountId": "1755209824", "amount": -45.4, "category": "IA", "commission": 19.95, "description": "YOU BOUGHT ABN AMRO BK NV MTN SR SB BOND 144A 2.65000% 01/19/2021 ISIN #US00084DAQ34 SEDOL #BF5G7R3 (Cash)", "fees": 0, "postedTimestamp": "2019-08-26T04:00:00Z", "price": 1, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "securityType": "DEBT", "shares": 2000, "subCategory": "BY", "transactionId": "65853199", "transactionTimestamp": "2019-08-26T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED TO FZFXX IS LIQUID FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 9075.09, "subCategory": "BY", "symbol": "FZFXX", "transactionId": "1383711025", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "commission": 0, "description": " EXCHANGED TO FZFXX FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "OC", "symbol": "FZFXX", "transactionId": "1383711024", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED FROM SPAXX TO FZFXX FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -9075.09, "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1383711023", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": -15.34, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-07-31T04:00:00Z", "price": 1, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 15.34, "subCategory": "BY", "symbol": "SPAXX", "transactionId": "491872566", "transactionTimestamp": "2019-07-31T04:00:00Z" }, { "accountId": "1755209824", "amount": 15.34, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-07-31T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "491872565", "transactionTimestamp": "2019-07-31T04:00:00Z" }, { "accountId": "1755209824", "amount": -15.03, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-06-28T04:00:00Z", "price": 1, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 15.03, "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1016217473", "transactionTimestamp": "2019-06-28T04:00:00Z" }, { "accountId": "1755209824", "amount": 15.03, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-06-28T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1016217472", "transactionTimestamp": "2019-06-28T04:00:00Z" } ] } }

data access network about akoya security and technology

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

glossary

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

coming soon statements

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


migration guide statement statementsversionprovideridaccountidstatementid new

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

pagination example

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


token flow ID token details

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


cors

Modern browsers have a security functionality (called the same-origin policy) which restricts web applications in one domain from accessing resources in another. Without the same-origin policy, it would be much easier for malicious websites to access resources from remote servers. Cross-origin resource sharing (CORS) allows a back end web resource to allow incoming requests from specific external sources.

When testing through a locally-stored version of our OpenAPI spec, through JavaScript in a browser, or some other testing scenarios, Akoya endpoints may return a CORS error: No Access-Control-Allow-Origin header is present on the requested resource. This is an expected error.

For more information and links to possible solutions, see Mozilla’s CORS guide, "Cross-Origin Resource Sharing (CORS)."

Change log

DateUpdate
2022-Oct-24Original

mikomo model response account details

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

balances

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

hub manual data providers

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

hub manual gaining access

🚧

One Data Recipient Hub account per company!

Your company should maintain one Data Recipient Hub team account. The first team member to join the Hub should send invitations to the remaining members of the team. This section covers how to add additional team members.


Gaining access to the the Hub is a self-service process:

Request an account by filling out our request form.

Account creation screen
Account creation screen

You’ll receive an automatically-generated email from _customersuccess@akoya.com_ with the subject line “Welcome to the Akoya Data Recipient Hub” containing a login link, your username, and temporary password. This password expires in seven days. If it does, you’ll have to re-submit the form.

At the initial login screen, you’ll be prompted to set a password of your choice and configure MFA. This process is described in the “Configuring MFA” section under “Team management.” Your company account has now been created.


token flow

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


troubleshooting interaction identifier

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


mikomo model response properties

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

project plan authenticate select accounts

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

akoya v2 release lets be specific

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


balances all account categories

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

postman collection end user authentication

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

docs.akoya.com docs

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


mikomo 9 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

{ "accounts": [ { "depositAccount": { "lineOfBusiness": "Personal", "interestYtd": 0, "transactionsIncluded": false, "accountType": "CHECKING", "currentBalance": 106717.06, "description": "Adv Plus Banking", "accountNumber": "454992210071", "productName": "Adv Plus Banking", "fiAttributes": [ { "name": "displayName", "value": "Adv Plus Banking - 0071" }, { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "0.00" } ], "availableBalance": 106717.06, "accountId": "47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429", "balanceType": "ASSET", "nickname": "Nickname Adv Plus Banking 0071", "balanceAsOf": "2020-05-02T10:08:43.924+0000", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "routingTransitNumber": "125000024", "status": "OPEN" } } ] }
{ "47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429": { "headers": { "Content-Type": "application/json" }, "payload": { "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }, "status": 200 } }
{ "customerId": "1221963501", "name": { "last": "Lewis", "first": "Walter", "middle": "P" }, "telephones": [ { "number": "9197312709" } ], "addresses": [ { "state": "NC", "city": "GOLDSBORO", "line1": "227 BRYANT CIR", "postalCode": "27534-8861" } ], "email": [ "walterplewis@gmail.com" ] }

mikomo model response content

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

postman collection installing and configuring the postman app

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

data elements fdx v4 paymentdetails

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

deprecation history

The following versions, elements, or documentation have been deprecated and are no longer supported. Please be sure to update to the latest version or implementation.

DeprecatedDateDescription
Data Elements FDX v4 documentation2022‑Aug‑18This document has been removed. To find detailed information about supported data elements, see Products and use cases.
FDX-based versioningSandbox: 2022‑Feb‑10Akoya now follows its own versioning that allows for new products while maintaining backward compatibility. The current version is Akoya API v1. For more information, see Versioning.
akoyaId2021‑Nov‑16The Data Access API required a user-generated unique Id to be passed with each call for tracking and support. This is no longer required and has been replaced with an Akoya generated unique Id passed in the response header, x-akoya-interaction-id.
Data Access API v1.02021‑Oct‑1The Data Access API v1.0 was modeled after FDX’s Durable Data API (DDA) v1.0.

oauth implementation styles websitewebapp

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


testing tokens sad path tests

🚧

Token required!

Please obtain a token prior to completing this section.

"Happy path" tests

Test caseTask(s)Expected result(s)
Refresh an ID tokenCall the /token endpoint with the refresh_token.Receive valid new ID and refresh tokens.
Refresh an expired ID token1. Identify an id_token older than 24 hours.

2. Call the /token endpoint with the refresh_token.
Receive valid new ID and refresh tokens.
Revoke an ID token1. Call the /token/revoke endpoint.

2. Attempt a call to the /accounts endpoint.
1. HTTP 200: OK (empty payload)

2. HTTP 401: Unauthorized

Error payload:
{
"code": 602,
"message": "Customer not authorized"
}

“Sad path” tests

Please review our error codes documentation.

Test caseTask(s)Expected result(s)
Refresh a used refresh_token.Test a token refresh call with a refresh_token that has already been claimed.HTTP 400: Bad Request

Error payload:
{
"error": "invalid_request",
   "error_description": "Refresh token is invalid or has 
 already been claimed by another client."
}
Refresh with invalid client_secret.Try a token refresh with an invalid client_secret.HTTP 401: Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Revoke with invalid client_secret.1. Try the revoke token endpoint without a client_secret.

2. Try the revoke token endpoint with an incorrect client_secret.
1. HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request"
}


2. HTTP 401: Unauthorized

Error payload:
{
   "error": "unauthorized_client"
}
Obtain a token with invalid authorization code.1. Use the /token endpoint with an expired code.

2. Use the /token endpoint with an incorrect code.
(both tasks) HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "Invalid or expired code parameter."
}
Obtain a token with an incorrect redirect_URI.Use /token endpoint with an incorrect redirect_URI.HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "redirect_uri did not match URI 
from initial request."
}
Obtain a token with a missing grant_type field.1. Use /token endpoint with a missing grant_type field.

2. Use /token endpoint with an incorrect grant_type field.
HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_grant"
}
Obtain a token with an incorrect client_id.1. Use /token endpoint with an incorrect clientId.

2. Use /token endpoint with an incorrect client_secret.
1. HTTP 401: invalid_client

2. HTTP 401 Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Refresh a token without a refresh_token.Use /token endpoint with grant_type=refresh_token without including the current refresh_token.HTTP 400 Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "No refresh token in request."
}

mikomo model response

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

mikomo model response lightweight

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

qa overview

Please reference the error case inventory, pagination document, and the various Mikomo test users available in the sandbox as you complete these tests. Akoya provides a set of generic Mikomo users to test our APIs. Provider-specific Mikomo users and data inventories are also available in the Data Recipient Hub.

🚧

Caution

Samples are based on production data, but responses may be updated or changed by providers.

References

TopicReference
Akoya API docsAkoya API Docs
Recommended project planHigh level project checklist
Integration guideDeveloper project checklist
Sample test planSee "Sample test plan" section.
Akoya error code inventory
Authentication errorsAuthentication errors
Token API errorsToken API errors
Akoya API errorsData Access API errors
PaginationPagination
Mikomo test users
General test usersMikomo
Provider-specificHoused within the Hub; please reference provider-specific pages for data inventories and provider-specific Mikomo test users

Our plan includes four sections which cover:

  1. Authentication: Authentication flow to the point when Akoya returns an ID token.

  2. Token management: The ID token refresh/revocation process.

  3. Akoya product responses: Responses from Akoya API endpoints.

  4. Akoya API Error Cases: Errors triggered by Akoya data APIs.


migration guide update details

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

hub manual team management biometric login

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

consent flow improvements example id token

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

migration guide

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

requirements

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


data elements fdx v4 currency

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

token flow oidc

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


account info annuity accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

hub manual data providers documentation tab

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

mikomo products

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

hub manual team management you lost access to your mfa app or security key

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

balances deposit accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

investments supported data elements

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

akoya v2 release

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


investments pensionsource

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

data elements fdx v4 bills

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

mikomo 3 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (Individual)
{         "accounts": [           {             "accountId": "1058527205",             "accountNumber": "*****1463",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1354412159",             "accountNumber": "*****5176",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "ROLLOVER IRA"           },           {             "accountId": "1857906311",             "accountNumber": "*****4146",             "accountType": "TIC",             "description": "Joint TIC",             "displayName": "Joint TIC",             "nickname": "Joint TIC"           },           {             "accountId": "1747792082",             "accountNumber": "*****3795",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Level 3"           },           {             "accountId": "892195915",             "accountNumber": "*****9699",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "House Fund"           },           {             "accountId": "212512418",             "accountNumber": "*****4512",             "accountType": "IRAB",             "description": "IRA - BDA",             "displayName": "IRA - BDA",             "nickname": "IRA - BDA"           },           {             "accountId": "868876526",             "accountNumber": "*****3826",             "accountType": "TIC",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1703786627",             "accountNumber": "*****8180",             "accountType": "TODJ",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1058497228",             "accountNumber": "*****1569",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1267662784",             "accountNumber": "*****6789",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1157850082",             "accountNumber": "*****5045",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "ROLLOVER IRA"           },           {             "accountId": "1857010597",             "accountNumber": "*****5068",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "668076213",             "accountNumber": "*****2036",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           },           {             "accountId": "1267662877",             "accountNumber": "*****6786",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1881890174",             "accountNumber": "*****9220",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "INDIVIDUAL"           },           {             "accountId": "360171549",             "accountNumber": "*****1184",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "INDIVIDUAL"           },           {             "accountId": "1747769917",             "accountNumber": "*****3817",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "TestAccount"           },           {             "accountId": "1177379104",             "accountNumber": "*****7428",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1704763220",             "accountNumber": "*****9317",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "868876557",             "accountNumber": "*****3827",             "accountType": "J",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1704022165",             "accountNumber": "*****8953",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1857906280",             "accountNumber": "*****4147",             "accountType": "TODJ",             "description": "Joint WROS - TOD",             "displayName": "Joint WROS - TOD",             "nickname": "Joint WROS - TOD"           },           {             "accountId": "1747852718",             "accountNumber": "*****3582",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Level 7"           },           {             "accountId": "1857695883",             "accountNumber": "*****4865",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1177379073",             "accountNumber": "*****7429",             "accountType": "IRA",             "description": "Traditional IRA",             "displayName": "Traditional IRA",             "nickname": "Traditional IRA"           },           {             "accountId": "1747770816",             "accountNumber": "*****3809",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Jim K's OrderMarking test"           },           {             "accountId": "425673116",             "accountNumber": "*****6368",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1110332638",             "accountNumber": "*****7178",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "425669179",             "accountNumber": "*****6325",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1783782214",             "accountNumber": "*****2233",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "THE DELTA PILOTS DEFINED"           },           {             "accountId": "357183466",             "accountNumber": "*****0967",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "91572249",             "accountNumber": "*****5180",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "My Brokerage"           },           {             "accountId": "1747769018",             "accountNumber": "*****3825",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Levelkamakshi"           },           {             "accountId": "88600589",             "accountNumber": "*****8808",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "DIA and INV OBJ"           },           {             "accountId": "869738357",             "accountNumber": "*****4600",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1704025916",             "accountNumber": "*****8990",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "668169523",             "accountNumber": "*****2379",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           },           {             "accountId": "1078746320",             "accountNumber": "*****6320",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "NATIONWIDE SAVINGS PLAN"           }         ]       }
{ "accounts": { "investmentAccount": [ { "accountId": "1058527205", "accountNumber": "*****1463", "accountType": "I", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1354412159", "accountNumber": "*****5176", "accountType": "IRRL", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "Rollover IRA", "nickname": "ROLLOVER IRA" }, { "accountId": "1857906311", "accountNumber": "*****4146", "accountType": "TIC", "availableCashBalance": 5662.24, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 5662.24, "displayName": "Joint TIC", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 5662.24, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 5662.24 } ], "nickname": "Joint TIC", "transactions": [ { "accountId": "1857906311", "amount": -6.05, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 6.05, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "6524215", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1857906311", "amount": 6.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "6524214", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1747792082", "accountNumber": "*****3795", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1920117.88, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 43.79, "positionType": "LONG", "purchasedPrice": 52.8, "securityId": "05329W102", "securityIdType": "CUSIP", "symbol": "AN", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 653.24, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 62711, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 1100 }, { "averageCost": false, "cashAccount": false, "marketValue": -8650, "positionType": "LONG", "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": -200 }, { "averageCost": false, "cashAccount": false, "marketValue": 582.4, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 13 }, { "averageCost": true, "cashAccount": false, "marketValue": 3, "positionType": "LONG", "purchasedPrice": 13.22, "securityId": "450913108", "securityIdType": "CUSIP", "symbol": "IAG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 816.73, "positionType": "LONG", "purchasedPrice": 0.01, "securityId": "CURJPY059", "securityIdType": "CUSIP", "symbol": "JPY", "units": 89064.51 }, { "averageCost": true, "cashAccount": false, "marketValue": 18358.07, "positionType": "LONG", "purchasedPrice": 8.35, "securityId": "067901108", "securityIdType": "CUSIP", "symbol": "ABX:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 86215.54, "positionType": "LONG", "purchasedPrice": 55.54, "securityId": "063671101", "securityIdType": "CUSIP", "symbol": "BMO:CA", "units": 1100 }, { "averageCost": false, "cashAccount": false, "marketValue": 21043.8, "positionType": "LONG", "securityId": "067806109", "securityIdType": "CUSIP", "symbol": "B", "units": 324 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.64, "securityId": "451055107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 129, "positionType": "LONG", "purchasedPrice": 98.95, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 45197.1, "positionType": "LONG", "purchasedPrice": 6.66, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 390 }, { "averageCost": true, "cashAccount": false, "marketValue": 2244.68, "positionType": "LONG", "purchasedPrice": 13.86, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 68 }, { "averageCost": true, "cashAccount": false, "marketValue": 442.09, "positionType": "LONG", "purchasedPrice": 41.35, "securityId": "459044103", "securityIdType": "CUSIP", "symbol": "IBOC", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 444.5, "positionType": "LONG", "purchasedPrice": 11.78, "securityId": "74373B109", "securityIdType": "CUSIP", "symbol": "PTI", "units": 254 }, { "averageCost": true, "cashAccount": false, "marketValue": 29301.72, "positionType": "LONG", "purchasedPrice": 21.3, "securityId": "136385101", "securityIdType": "CUSIP", "symbol": "CNQ:CA", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3954.04, "positionType": "LONG", "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 41 }, { "averageCost": false, "cashAccount": false, "marketValue": 2018.88, "positionType": "LONG", "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 701 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 149.59, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 192.84, "securityId": "53578A108", "securityIdType": "CUSIP", "units": 32 }, { "averageCost": true, "cashAccount": false, "marketValue": 56058.77, "positionType": "LONG", "purchasedPrice": 39.34, "securityId": "891160509", "securityIdType": "CUSIP", "symbol": "TD:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 234.02, "positionType": "LONG", "purchasedPrice": 188.94, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -200 }, { "averageCost": false, "cashAccount": false, "marketValue": 12501.46, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1411 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.51, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 1023 }, { "averageCost": true, "cashAccount": false, "marketValue": 77.88, "positionType": "LONG", "purchasedPrice": 6.17, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 11 }, { "averageCost": false, "cashAccount": false, "marketValue": 476140, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 8950 }, { "averageCost": false, "cashAccount": false, "marketValue": 2043.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 67 }, { "averageCost": true, "cashAccount": false, "marketValue": 436.2, "positionType": "LONG", "purchasedPrice": 123.79, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 7813.05, "positionType": "LONG", "purchasedPrice": 116.15, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 35 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.43, "securityId": "25459W516", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 34.79, "positionType": "LONG", "purchasedPrice": 31.56, "securityId": "G4740B105", "securityIdType": "CUSIP", "symbol": "ICHR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 17.83, "securityId": "45074Q108", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 17328, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.41, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 405749.34, "positionType": "LONG", "purchasedPrice": 132.82, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1251 }, { "averageCost": false, "cashAccount": false, "marketValue": -12404, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": -1400 }, { "averageCost": true, "cashAccount": false, "marketValue": 19120, "positionType": "LONG", "purchasedPrice": 70.53, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 250 }, { "averageCost": true, "cashAccount": false, "marketValue": 46814.75, "positionType": "LONG", "purchasedPrice": 7.2, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 995 }, { "averageCost": false, "cashAccount": false, "marketValue": 9020.88, "positionType": "LONG", "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 136 }, { "averageCost": true, "cashAccount": false, "marketValue": 840.2, "positionType": "LONG", "purchasedPrice": 9.19, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 5 }, { "averageCost": false, "cashAccount": false, "marketValue": 6, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 80112.09, "positionType": "LONG", "purchasedPrice": 57.25, "securityId": "780087102", "securityIdType": "CUSIP", "symbol": "RY:CA", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 191.94, "positionType": "LONG", "purchasedPrice": 11.62, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 2579.66, "positionType": "LONG", "securityId": "316345305", "securityIdType": "CUSIP", "symbol": "FLPSX", "units": 52.411 }, { "averageCost": true, "cashAccount": false, "marketValue": 278.09, "positionType": "LONG", "purchasedPrice": 153.61, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 20.56, "securityId": "25459W144", "securityIdType": "CUSIP", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.94, "securityId": "449489103", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.4, "positionType": "LONG", "purchasedPrice": 13.94, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 9328.88, "positionType": "LONG", "purchasedPrice": 83.88, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 44 }, { "averageCost": true, "cashAccount": false, "marketValue": 4325, "positionType": "LONG", "purchasedPrice": 47.63, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 434226, "positionType": "LONG", "purchasedPrice": 17.65, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 11720 }, { "averageCost": true, "cashAccount": false, "marketValue": 2613.88, "positionType": "LONG", "purchasedPrice": 30.1, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 202 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 8.29, "securityId": "582411104", "securityIdType": "CUSIP", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2897.93, "positionType": "LONG", "purchasedPrice": 0.39, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 2633.29 }, { "averageCost": false, "cashAccount": false, "marketValue": 681.29, "positionType": "LONG", "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 48.08 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.51, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 2952.9, "positionType": "LONG", "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 9 }, { "averageCost": true, "cashAccount": false, "marketValue": 51.67, "positionType": "LONG", "purchasedPrice": 47.46, "securityId": "540424108", "securityIdType": "CUSIP", "symbol": "L", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 31437.44, "positionType": "LONG", "purchasedPrice": 26.43, "securityId": "867224107", "securityIdType": "CUSIP", "symbol": "SU:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 44.82, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.72, "securityId": "62913F201", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": -115443.48, "positionType": "LONG", "purchasedPrice": 6.17, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -687 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.11, "positionType": "LONG", "purchasedPrice": 39.08, "securityId": "876568502", "securityIdType": "CUSIP", "symbol": "TTM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.31, "securityId": "100853KZ2", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 111.6, "positionType": "LONG", "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 9.07, "positionType": "LONG", "purchasedPrice": 12.06, "securityId": "44949L105", "securityIdType": "CUSIP", "symbol": "IEC", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 143886.05, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1045 }, { "averageCost": true, "cashAccount": false, "marketValue": 3036, "positionType": "LONG", "purchasedPrice": 8.55, "securityId": "11373M107", "securityIdType": "CUSIP", "symbol": "BRKL", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 11.99, "positionType": "LONG", "purchasedPrice": 15.21, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1280.53, "positionType": "LONG", "purchasedPrice": 0.76, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 1690.82 }, { "averageCost": true, "cashAccount": false, "marketValue": 1773.75, "positionType": "LONG", "purchasedPrice": 0.76, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 2628.17 }, { "averageCost": true, "cashAccount": false, "marketValue": 1349.59, "positionType": "LONG", "purchasedPrice": 8.62, "securityId": "893662106", "securityIdType": "CUSIP", "symbol": "TGL:CA", "units": 1100 } ], "marginBalance": 1736771.29, "nickname": "Option Level 3", "transactions": [ { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " DIV OF $0.20 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " DIV OF $0.60 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -8.2, "category": "IA", "description": "YOU BOUGHT ", "securityId": "82968B103", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "SIRI", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 7.19846 }, { "accountId": "1747792082", "amount": -108.66, "category": "IA", "description": "YOU BOUGHT SHORT COVER ", "securityId": "988498101", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "YUM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 106.658 }, { "accountId": "1747792082", "amount": -13.02, "category": "IA", "description": "YOU BOUGHT ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.0235 }, { "accountId": "1747792082", "amount": 11.01, "category": "IA", "description": "YOU SOLD ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.0235 }, { "accountId": "1747792082", "amount": -13.2, "category": "IA", "description": "YOU BOUGHT ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.2035 }, { "accountId": "1747792082", "amount": 13.54, "category": "IA", "description": "YOU SOLD ", "securityId": "013872106", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "AA", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 14.5485 }, { "accountId": "1747792082", "amount": -34.4, "category": "IA", "description": "YOU BOUGHT SHORT COVER ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "BAC", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 33.3985 }, { "accountId": "1747792082", "amount": 104.64, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "988498101", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "YUM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 106.653 }, { "accountId": "1747792082", "amount": -14.03, "category": "IA", "description": "YOU BOUGHT ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "GE", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 13.0285 }, { "accountId": "1747792082", "amount": 8535.57, "category": "IA", "description": "YOU SOLD ;REF/MD/SPAR ; ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": -200, "status": "PENDING", "subCategory": "SL", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": 4279.31, "category": "IA", "description": "YOU SOLD ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": -100, "status": "PENDING", "subCategory": "SL", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": -4289.3, "category": "IA", "description": "YOU BOUGHT ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 100, "status": "PENDING", "subCategory": "BY", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": 2.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "920389096", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -337.25, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "716416889", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2497.15, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765320 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "716416890", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 337.25, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "716416891", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2148, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "1986150853", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -12966.79, "category": "IA", "description": "YOU BOUGHT ", "securityId": "345370860", "securityIdType": "CUSIP", "shares": 1400, "status": "POSTED", "subCategory": "BY", "symbol": "F", "transactionId": "1986150831", "transactionTimestamp": 1579755600, "unitPrice": 9.25846 }, { "accountId": "1747792082", "amount": -93.58, "category": "IA", "description": "YOU BOUGHT ", "securityId": "345370860", "securityIdType": "CUSIP", "shares": 10, "status": "POSTED", "subCategory": "BY", "symbol": "F", "transactionId": "1986150830", "transactionTimestamp": 1579755600, "unitPrice": 9.25846 }, { "accountId": "1747792082", "amount": -347.49, "category": "IA", "description": "YOU BOUGHT ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 10, "status": "POSTED", "subCategory": "BY", "symbol": "BAC", "transactionId": "1986150829", "transactionTimestamp": 1579755600, "unitPrice": 34.3485 }, { "accountId": "1747792082", "amount": -35.36, "category": "IA", "description": "YOU BOUGHT ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "BAC", "transactionId": "1986150828", "transactionTimestamp": 1579755600, "unitPrice": 34.3585 }, { "accountId": "1747792082", "amount": 339.48, "category": "IA", "description": "YOU SOLD ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": -10, "status": "POSTED", "subCategory": "SL", "symbol": "BAC", "transactionId": "1986150827", "transactionTimestamp": 1579755600, "unitPrice": 34.3485 }, { "accountId": "1747792082", "amount": 348.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1312478375", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0.9, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1312478374", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -5917.92, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 1,690,834DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1864151401", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -32.94, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765081 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "338985403", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2676.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "338985404", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2676.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "338985407", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 20.44, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "105679664", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 12.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BOOM", "transactionId": "105679663", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 35.57, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1717826031", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -35.57, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1717826032", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 35.57, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638031", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -35.57, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638030", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -785.28, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638029", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 785.28, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638028", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0.81, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1705633506", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2320.1, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "997629769", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2320.1, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "997629766", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 4.35, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "849846193", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -1022.15, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "849846192", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 1022.15, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "849846190", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "892195915", "accountNumber": "*****9699", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 95230662.44, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1019.27, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6N2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 152.09, "positionType": "LONG", "purchasedPrice": 18.01, "securityId": "316066406", "securityIdType": "CUSIP", "symbol": "FTQGX", "units": 5.65 }, { "averageCost": true, "cashAccount": false, "marketValue": 1000.8, "positionType": "LONG", "purchasedPrice": 1, "securityId": "15135KBM2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "254673BU9", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1002.81, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FJS7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 387.4, "positionType": "LONG", "purchasedPrice": 39.67, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2488.29, "positionType": "LONG", "purchasedPrice": 311.76, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 16.038 }, { "averageCost": true, "cashAccount": false, "marketValue": 23635, "positionType": "LONG", "purchasedPrice": 23.5, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "824593BC0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 313680, "positionType": "LONG", "purchasedPrice": 1338.12, "securityId": "836999102", "securityIdType": "CUSIP", "symbol": "GKR1", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 20.84, "securityId": "52470B305", "securityIdType": "CUSIP", "units": 47819.173 }, { "averageCost": false, "cashAccount": false, "marketValue": 65324000, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 200000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.01, "securityId": "20033AWJ1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": -5969.11, "positionType": "LONG", "securityId": "25179M103", "securityIdType": "CUSIP", "symbol": "DVN", "units": -269 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.7, "positionType": "LONG", "purchasedPrice": 35.9, "securityId": "456788108", "securityIdType": "CUSIP", "symbol": "INFY", "units": 45 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "36966R2T2", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5195.52, "positionType": "LONG", "purchasedPrice": 16.21, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 1804 }, { "averageCost": false, "cashAccount": false, "marketValue": 4303684.9, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 75490 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 49.11, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 1301 }, { "averageCost": true, "cashAccount": false, "marketValue": 313708, "positionType": "LONG", "purchasedPrice": 1322.97, "securityId": "999999717", "securityIdType": "CUSIP", "symbol": "GKA1", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3350.11, "positionType": "LONG", "purchasedPrice": 0.01, "securityId": "CURJPY059", "securityIdType": "CUSIP", "symbol": "JPY", "units": 365329.76 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "00202RAA4", "securityIdType": "CUSIP", "units": 7000 }, { "averageCost": true, "cashAccount": false, "marketValue": 57707.1, "positionType": "LONG", "purchasedPrice": 25.08, "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 870 }, { "averageCost": true, "cashAccount": false, "marketValue": 1500093.08, "positionType": "LONG", "purchasedPrice": 11.33, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 8927 }, { "averageCost": true, "cashAccount": false, "marketValue": 14461.01, "positionType": "LONG", "purchasedPrice": 164.25, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 104 }, { "averageCost": true, "cashAccount": false, "marketValue": 2583, "positionType": "LONG", "purchasedPrice": 9.08, "securityId": "12811L107", "securityIdType": "CUSIP", "symbol": "CHW", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 56.89, "positionType": "LONG", "purchasedPrice": 51.92, "securityId": "844741108", "securityIdType": "CUSIP", "symbol": "LUV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 371.03, "positionType": "LONG", "purchasedPrice": 95.16, "securityId": "806857108", "securityIdType": "CUSIP", "symbol": "SLB", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 12117.89, "positionType": "LONG", "purchasedPrice": 0.88, "securityId": "P9802B109", "securityIdType": "CUSIP", "symbol": "VITRO_A:MX", "units": 5500 }, { "averageCost": true, "cashAccount": false, "marketValue": 12940, "positionType": "LONG", "purchasedPrice": 40.04, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 446.04, "positionType": "LONG", "purchasedPrice": 41.97, "securityId": "055622104", "securityIdType": "CUSIP", "symbol": "BP", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHX8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 16454, "positionType": "LONG", "purchasedPrice": 65.36, "securityId": "29476L107", "securityIdType": "CUSIP", "symbol": "EQR", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PU54", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -4.17, "positionType": "LONG", "securityId": "315910836", "securityIdType": "CUSIP", "symbol": "FNMIX", "units": -0.275 }, { "averageCost": true, "cashAccount": false, "marketValue": 4162.5, "positionType": "LONG", "purchasedPrice": 14.08, "securityId": "128117108", "securityIdType": "CUSIP", "symbol": "CHI", "units": 370 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.01, "securityId": "06428FJP3", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": false, "cashAccount": false, "marketValue": -80182.98, "positionType": "LONG", "securityId": "097023105", "securityIdType": "CUSIP", "symbol": "BA", "units": -249 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.03, "securityId": "T4210N122", "securityIdType": "CUSIP", "units": 6600 }, { "averageCost": true, "cashAccount": false, "marketValue": 2491.86, "positionType": "LONG", "purchasedPrice": 62.35, "securityId": "33733E302", "securityIdType": "CUSIP", "symbol": "FDN", "units": 17 }, { "averageCost": true, "cashAccount": false, "marketValue": 30007.2, "positionType": "LONG", "purchasedPrice": 100, "securityId": "37046ACC7", "securityIdType": "CUSIP", "units": 30000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6753.6, "positionType": "LONG", "purchasedPrice": 27.41, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 201 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "760296FM0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1055.91, "positionType": "LONG", "purchasedPrice": 95.32, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 99.147 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.95, "securityId": "013817101", "securityIdType": "CUSIP", "units": 1378 }, { "averageCost": true, "cashAccount": false, "marketValue": 105.3, "positionType": "LONG", "purchasedPrice": 11.44, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 8461.81, "positionType": "LONG", "purchasedPrice": 0.78, "securityId": "CURSGD105", "securityIdType": "CUSIP", "symbol": "SGD", "units": 11518.22 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 61.17, "securityId": "73935A104", "securityIdType": "CUSIP", "units": 2900 }, { "averageCost": true, "cashAccount": false, "marketValue": 5, "positionType": "LONG", "purchasedPrice": 8.14, "securityId": "496902404", "securityIdType": "CUSIP", "symbol": "KGC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FCK1", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 27208, "positionType": "LONG", "purchasedPrice": 35.83, "securityId": "127097103", "securityIdType": "CUSIP", "symbol": "COG", "units": 1900 }, { "averageCost": true, "cashAccount": false, "marketValue": -1806, "positionType": "LONG", "purchasedPrice": 9.83, "securityId": "55262C100", "securityIdType": "CUSIP", "symbol": "MBI", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.12, "securityId": "090688AA0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 6.86, "securityId": "G93285107", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11790, "positionType": "LONG", "purchasedPrice": 11.36, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3353.9, "positionType": "LONG", "purchasedPrice": 39.21, "securityId": "783554850", "securityIdType": "CUSIP", "symbol": "RYBAX", "units": 65.036 }, { "averageCost": true, "cashAccount": false, "marketValue": 250090, "positionType": "LONG", "purchasedPrice": 1, "securityId": "909557HC7", "securityIdType": "CUSIP", "units": 250000 }, { "averageCost": true, "cashAccount": false, "marketValue": 65595, "positionType": "LONG", "purchasedPrice": 7.42, "securityId": "269246401", "securityIdType": "CUSIP", "symbol": "ETFC", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 181750.8, "positionType": "LONG", "purchasedPrice": 0.77, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1320 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.8, "positionType": "LONG", "purchasedPrice": 3.99, "securityId": "378973408", "securityIdType": "CUSIP", "symbol": "GSAT", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": -1772070.3, "positionType": "LONG", "purchasedPrice": 1.17, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": -12870 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "912796JB6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "465076JV0", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KLZ5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.69, "securityId": "13643E105", "securityIdType": "CUSIP", "units": 4500 }, { "averageCost": true, "cashAccount": false, "marketValue": 66231.05, "positionType": "LONG", "purchasedPrice": 2.16, "securityId": "P4948K121", "securityIdType": "CUSIP", "symbol": "GRUMA_B:MX", "units": 5950 }, { "averageCost": true, "cashAccount": false, "marketValue": 10466.27, "positionType": "LONG", "purchasedPrice": 12.01, "securityId": "316448885", "securityIdType": "CUSIP", "symbol": "FSAZX", "units": 832.639 }, { "averageCost": true, "cashAccount": false, "marketValue": 197.58, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 1535.72 }, { "averageCost": true, "cashAccount": false, "marketValue": 19550, "positionType": "LONG", "purchasedPrice": 21.53, "securityId": "999998222", "securityIdType": "CUSIP", "symbol": "SEA1", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 284.93, "positionType": "LONG", "purchasedPrice": 0.92, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 422.19 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 59.43, "securityId": "464288455", "securityIdType": "CUSIP", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 17847.06, "positionType": "LONG", "purchasedPrice": 17.09, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 154 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.47, "securityId": "20030N200", "securityIdType": "CUSIP", "units": -85 }, { "averageCost": true, "cashAccount": false, "marketValue": 12442, "positionType": "LONG", "purchasedPrice": 62.26, "securityId": "46429B671", "securityIdType": "CUSIP", "symbol": "MCHI", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3882.15, "positionType": "LONG", "purchasedPrice": 1.35, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 5126 }, { "averageCost": true, "cashAccount": false, "marketValue": 8142.23, "positionType": "LONG", "purchasedPrice": 0.8, "securityId": "CURNZD071", "securityIdType": "CUSIP", "symbol": "NZD", "units": 12482.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.86, "securityId": "218868107", "securityIdType": "CUSIP", "units": 11000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "F47696111", "securityIdType": "CUSIP", "symbol": "HAV:FR", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 57.02, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 400 }, { "averageCost": false, "cashAccount": false, "marketValue": 26604, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 4434 }, { "averageCost": true, "cashAccount": false, "marketValue": 5493, "positionType": "LONG", "purchasedPrice": 3.39, "securityId": "Y1023R104", "securityIdType": "CUSIP", "symbol": "BYDDF", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 606.06, "positionType": "LONG", "purchasedPrice": 17.21, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 74 }, { "averageCost": true, "cashAccount": false, "marketValue": 291257.32, "positionType": "LONG", "purchasedPrice": 141.67, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 898 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.32, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -32810, "positionType": "LONG", "purchasedPrice": 227.2, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 3362.21, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 26132.81 }, { "averageCost": true, "cashAccount": false, "marketValue": 34316, "positionType": "LONG", "purchasedPrice": 100.93, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 100 }, { "averageCost": false, "cashAccount": false, "marketValue": -518672.56, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": -1588 }, { "averageCost": false, "cashAccount": false, "marketValue": 6432934999.99, "positionType": "LONG", "securityId": "Y14965100", "securityIdType": "CUSIP", "symbol": "941:HK", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 11242758, "positionType": "LONG", "purchasedPrice": 53.37, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 6051 }, { "averageCost": true, "cashAccount": false, "marketValue": 17328, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20033AVX1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": 898246, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 5800 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "59101LCK1", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 10, "securityId": "018601104", "securityIdType": "CUSIP", "units": 675 }, { "averageCost": true, "cashAccount": false, "marketValue": -2878.92, "positionType": "LONG", "purchasedPrice": 40.6, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -33 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "010237EL5", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "321089BG8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -3489.6, "positionType": "LONG", "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -40 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.03, "securityId": "371485103", "securityIdType": "CUSIP", "units": 900000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7232, "positionType": "LONG", "purchasedPrice": 18, "securityId": "37950E416", "securityIdType": "CUSIP", "symbol": "SOCL", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 640.34, "positionType": "LONG", "purchasedPrice": 8.17, "securityId": "09228F103", "securityIdType": "CUSIP", "symbol": "BB", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 29.29, "securityId": "18383M100", "securityIdType": "CUSIP", "units": 37 }, { "averageCost": false, "cashAccount": false, "marketValue": 122, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": -24282, "positionType": "LONG", "purchasedPrice": 78.31, "securityId": "674599105", "securityIdType": "CUSIP", "symbol": "OXY", "units": -600 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "06741RDE8", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.28, "securityId": "767754104", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "32026UEK8", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 4.8, "securityId": "35906A108", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "912796LT4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "199098AJ3", "securityIdType": "CUSIP", "units": 150000 }, { "averageCost": false, "cashAccount": false, "marketValue": -2964, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": -494 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 21.69, "securityId": "74347X591", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3973.92, "positionType": "LONG", "purchasedPrice": 92.98, "securityId": "912828S92", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "06048WAH3", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 20617.05, "positionType": "LONG", "purchasedPrice": 20.33, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 889.433 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.62, "securityId": "91388Q202", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3552.01, "positionType": "LONG", "purchasedPrice": 45, "securityId": "78355E361", "securityIdType": "CUSIP", "symbol": "RYBMX", "units": 66.667 }, { "averageCost": true, "cashAccount": false, "marketValue": 10823.41, "positionType": "LONG", "purchasedPrice": 1.33, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 9835 }, { "averageCost": true, "cashAccount": false, "marketValue": -561.6, "positionType": "LONG", "purchasedPrice": 6.54, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": -195 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.4, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1029, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6Q5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3420228, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 64290 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.77, "securityId": "G93882135", "securityIdType": "CUSIP", "units": 14100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1070611.08, "positionType": "LONG", "purchasedPrice": 83.68, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 4796 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNY9", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4710.16, "positionType": "LONG", "purchasedPrice": 26.97, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 364 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.71, "securityId": "852061100", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 8211, "positionType": "LONG", "securityId": "33761N109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.56, "securityId": "013904305", "securityIdType": "CUSIP", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 34924.58, "positionType": "LONG", "purchasedPrice": 16.18, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1058 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 4.82, "securityId": "35906A108", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2234.97, "positionType": "LONG", "purchasedPrice": 19.41, "securityId": "887432409", "securityIdType": "CUSIP", "symbol": "TPLNX", "units": 128.817 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "508176CL6", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": -6496, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": -145 }, { "averageCost": true, "cashAccount": false, "marketValue": -19, "positionType": "LONG", "purchasedPrice": 2.97, "securityId": "74979E101", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 877.72, "positionType": "LONG", "purchasedPrice": 2.28, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 893 }, { "averageCost": true, "cashAccount": false, "marketValue": 211.92, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURZAR112", "securityIdType": "CUSIP", "symbol": "ZAR", "units": 3094.94 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 25.9, "securityId": "268648102", "securityIdType": "CUSIP", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 61732, "positionType": "LONG", "purchasedPrice": 15.39, "securityId": "617446448", "securityIdType": "CUSIP", "symbol": "MS", "units": 1150 }, { "averageCost": true, "cashAccount": false, "marketValue": 60964.16, "positionType": "LONG", "purchasedPrice": 0.12, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 703 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38522AAX4", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 43.68, "securityId": "111320107", "securityIdType": "CUSIP", "units": 899 }, { "averageCost": true, "cashAccount": false, "marketValue": -774.8, "positionType": "LONG", "purchasedPrice": 20.65, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": -20 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PSP2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PSN7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KHV9", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "314172354", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7383.53, "positionType": "LONG", "purchasedPrice": 67.9, "securityId": "H8817H100", "securityIdType": "CUSIP", "symbol": "RIG", "units": 1561 }, { "averageCost": false, "cashAccount": false, "marketValue": 20749.85, "positionType": "LONG", "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 285.143 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHW0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "02587DY28", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNW3", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 14470.4, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 323 }, { "averageCost": false, "cashAccount": false, "marketValue": -13381.36, "positionType": "LONG", "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": -12159.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "65675QCG2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "06428FCK1", "securityIdType": "CUSIP", "units": -3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 72838.2, "positionType": "LONG", "purchasedPrice": 202.69, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 222 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.3, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 42126, "positionType": "LONG", "purchasedPrice": 17.99, "securityId": "49446R109", "securityIdType": "CUSIP", "symbol": "KIM", "units": 2100 }, { "averageCost": true, "cashAccount": false, "marketValue": 6333.73, "positionType": "LONG", "purchasedPrice": 5.71, "securityId": "36290SYK1", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 141.73, "positionType": "LONG", "purchasedPrice": 106.94, "securityId": "713448108", "securityIdType": "CUSIP", "symbol": "PEP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.89, "securityId": "912828TP5", "securityIdType": "CUSIP", "units": 25000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2555.88, "positionType": "LONG", "purchasedPrice": 5.8, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 361 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9, "securityId": "070249107", "securityIdType": "CUSIP", "symbol": "BSSP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3525, "positionType": "LONG", "purchasedPrice": 13.12, "securityId": "12811P108", "securityIdType": "CUSIP", "symbol": "CHY", "units": 300 }, { "averageCost": false, "cashAccount": false, "marketValue": 10496.35, "positionType": "LONG", "securityId": "CURNOK085", "securityIdType": "CUSIP", "symbol": "NOK", "units": 96220.13 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 40.05, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 118 }, { "averageCost": true, "cashAccount": false, "marketValue": -510.01, "positionType": "LONG", "purchasedPrice": 10.55, "securityId": "ZZZ965100", "securityIdType": "CUSIP", "symbol": "CTM:DE", "units": -500 }, { "averageCost": true, "cashAccount": false, "marketValue": -23402, "positionType": "LONG", "purchasedPrice": 125.19, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 25111.93, "positionType": "LONG", "purchasedPrice": 0.15, "securityId": "CURSEK127", "securityIdType": "CUSIP", "symbol": "SEK", "units": 241581.93 }, { "averageCost": true, "cashAccount": false, "marketValue": 7608.48, "positionType": "LONG", "purchasedPrice": 21.06, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 303.732 }, { "averageCost": true, "cashAccount": false, "marketValue": 2014.3, "positionType": "LONG", "purchasedPrice": 99.92, "securityId": "912828XW5", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763VB9", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 22.84, "positionType": "LONG", "purchasedPrice": 26.76, "securityId": "464286103", "securityIdType": "CUSIP", "symbol": "EWA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 7755.42, "positionType": "LONG", "purchasedPrice": 35.92, "securityId": "254687106", "securityIdType": "CUSIP", "symbol": "DIS", "units": 57 }, { "averageCost": false, "cashAccount": false, "marketValue": 886, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 6549.35, "positionType": "LONG", "purchasedPrice": 5.93, "securityId": "36290SYJ4", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5111.32, "positionType": "LONG", "purchasedPrice": 73.82, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 53 }, { "averageCost": false, "cashAccount": false, "marketValue": 6505852.5, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 47250 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 19.27, "securityId": "984121103", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "018490102", "securityIdType": "CUSIP", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "59101LCJ4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1039.32, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6M4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1566.7, "positionType": "LONG", "purchasedPrice": 1646.4, "securityId": "998997191", "securityIdType": "CUSIP", "symbol": "GB1", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2183.74, "positionType": "LONG", "purchasedPrice": 55.14, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 37 }, { "averageCost": true, "cashAccount": false, "marketValue": 2628.69, "positionType": "LONG", "purchasedPrice": 10.49, "securityId": "31617K881", "securityIdType": "CUSIP", "symbol": "FTBFX", "units": 238.322 }, { "averageCost": false, "cashAccount": false, "marketValue": 70456.89, "positionType": "LONG", "securityId": "30231G102", "securityIdType": "CUSIP", "symbol": "XOM", "units": 1099 }, { "averageCost": true, "cashAccount": false, "marketValue": 5851.96, "positionType": "LONG", "purchasedPrice": 15.51, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 327.474 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.4, "securityId": "912796KF5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.53, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 404 }, { "averageCost": false, "cashAccount": false, "marketValue": 77129.21, "positionType": "LONG", "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 101841.41 }, { "averageCost": false, "cashAccount": false, "marketValue": -197447, "positionType": "LONG", "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -1175 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "46176PLD5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1878.15, "positionType": "LONG", "purchasedPrice": 73.55, "securityId": "81369Y407", "securityIdType": "CUSIP", "symbol": "XLY", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 63506.6, "positionType": "LONG", "purchasedPrice": 137.41, "securityId": "92826C839", "securityIdType": "CUSIP", "symbol": "V", "units": 310 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "032511107", "securityIdType": "CUSIP", "units": -600 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "88224PKW8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1086.3, "positionType": "LONG", "purchasedPrice": 5.29, "securityId": "165185109", "securityIdType": "CUSIP", "symbol": "CHKR", "units": 1700 }, { "averageCost": true, "cashAccount": false, "marketValue": 4861, "positionType": "LONG", "purchasedPrice": 72.75, "securityId": "464288869", "securityIdType": "CUSIP", "symbol": "IWC", "units": 50 }, { "averageCost": true, "cashAccount": false, "marketValue": 1000.08, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHY6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 158603, "positionType": "LONG", "purchasedPrice": 1312.87, "securityId": "999998123", "securityIdType": "CUSIP", "symbol": "GEA1", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1009.87, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763ZT6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 23402, "positionType": "LONG", "purchasedPrice": 127.11, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 27.79, "securityId": "428236103", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "14912L2Y6", "securityIdType": "CUSIP", "units": 36000 }, { "averageCost": true, "cashAccount": false, "marketValue": 73046.3, "positionType": "LONG", "purchasedPrice": 45.54, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 1129 }, { "averageCost": true, "cashAccount": false, "marketValue": 1388.1, "positionType": "LONG", "purchasedPrice": 26.06, "securityId": "06828M702", "securityIdType": "CUSIP", "symbol": "BREFX", "units": 51.989 }, { "averageCost": true, "cashAccount": false, "marketValue": 163492.14, "positionType": "LONG", "purchasedPrice": 44.11, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": 1218 }, { "averageCost": true, "cashAccount": false, "marketValue": 9733.37, "positionType": "LONG", "purchasedPrice": 77.5, "securityId": "78355Y508", "securityIdType": "CUSIP", "symbol": "RYTTX", "units": 64.515 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "066519DT3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 37570, "positionType": "LONG", "purchasedPrice": 82.37, "securityId": "26875P101", "securityIdType": "CUSIP", "symbol": "EOG", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 1005.74, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763ZS8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 21777.53, "positionType": "LONG", "purchasedPrice": 17.77, "securityId": "783554769", "securityIdType": "CUSIP", "symbol": "RYEAX", "units": 430.386 }, { "averageCost": true, "cashAccount": false, "marketValue": 180180, "positionType": "LONG", "purchasedPrice": 137.92, "securityId": "998997209", "securityIdType": "CUSIP", "symbol": "GEAT", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 15116.4, "positionType": "LONG", "purchasedPrice": 1.23, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 408 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "46176PKA2", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 13129.54, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURMXN065", "securityIdType": "CUSIP", "symbol": "MXN", "units": 245457.94 }, { "averageCost": false, "cashAccount": false, "marketValue": 507547.04, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 3169 }, { "averageCost": true, "cashAccount": false, "marketValue": 786.24, "positionType": "LONG", "purchasedPrice": 38.86, "securityId": "464287374", "securityIdType": "CUSIP", "symbol": "IGE", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNU7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 707.66, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 159 }, { "averageCost": true, "cashAccount": false, "marketValue": 3990, "positionType": "LONG", "purchasedPrice": 93.44, "securityId": "9128282D1", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 16267.72, "positionType": "LONG", "purchasedPrice": 224.69, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 5132.65, "positionType": "LONG", "purchasedPrice": 21.03, "securityId": "783554348", "securityIdType": "CUSIP", "symbol": "RYACX", "units": 142.653 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KLM4", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2108.51, "positionType": "LONG", "purchasedPrice": 9.66, "securityId": "921659108", "securityIdType": "CUSIP", "symbol": "VNDA", "units": 157 }, { "averageCost": true, "cashAccount": false, "marketValue": 382.65, "positionType": "LONG", "purchasedPrice": 152.27, "securityId": "666807102", "securityIdType": "CUSIP", "symbol": "NOC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 60.94, "positionType": "LONG", "purchasedPrice": 88.31, "securityId": "98156Q108", "securityIdType": "CUSIP", "symbol": "WWE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 43.71, "securityId": "19761R307", "securityIdType": "CUSIP", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.02, "positionType": "LONG", "purchasedPrice": 38279.16, "securityId": "G93882192", "securityIdType": "CUSIP", "symbol": "VOD:GB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 14833, "positionType": "LONG", "purchasedPrice": 35.03, "securityId": "49456B101", "securityIdType": "CUSIP", "symbol": "KMI", "units": 700 }, { "averageCost": true, "cashAccount": false, "marketValue": 62799.89, "positionType": "LONG", "purchasedPrice": 1.07, "securityId": "CURCHF138", "securityIdType": "CUSIP", "symbol": "CHF", "units": 61154.54 }, { "averageCost": true, "cashAccount": false, "marketValue": 105567, "positionType": "LONG", "purchasedPrice": 18.9, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20033AWJ1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 91.57, "positionType": "LONG", "purchasedPrice": 254.44, "securityId": "78464A870", "securityIdType": "CUSIP", "symbol": "XBI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 44081.5, "positionType": "LONG", "purchasedPrice": 47.7, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 500.244 }, { "averageCost": true, "cashAccount": false, "marketValue": 1440, "positionType": "LONG", "purchasedPrice": 8.36, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 24978.5, "positionType": "LONG", "purchasedPrice": 98.19, "securityId": "912828UV0", "securityIdType": "CUSIP", "units": 25000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "3133ECFV1", "securityIdType": "CUSIP", "units": 37000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8904.84, "positionType": "LONG", "purchasedPrice": 100.78, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 42 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "062683BK2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.63, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 167 }, { "averageCost": true, "cashAccount": false, "marketValue": 7211.2, "positionType": "LONG", "purchasedPrice": 166.86, "securityId": "315912808", "securityIdType": "CUSIP", "symbol": "ONEQ", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 10.1, "positionType": "LONG", "purchasedPrice": 102.41, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 0.713 }, { "averageCost": true, "cashAccount": false, "marketValue": 3658.06, "positionType": "LONG", "purchasedPrice": 38.31, "securityId": "92646A286", "securityIdType": "CUSIP", "symbol": "MNNCX", "units": 112.452 }, { "averageCost": true, "cashAccount": false, "marketValue": 1437.47, "positionType": "LONG", "purchasedPrice": 187.2, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 66.488 }, { "averageCost": true, "cashAccount": false, "marketValue": -580990, "positionType": "LONG", "purchasedPrice": 30.27, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2942.49, "positionType": "LONG", "purchasedPrice": 15.09, "securityId": "487836108", "securityIdType": "CUSIP", "symbol": "K", "units": 43 }, { "averageCost": true, "cashAccount": false, "marketValue": 22162.19, "positionType": "LONG", "purchasedPrice": 11.41, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 1879.745 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "80280JRJ2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -97356, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -1830 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "17417QEG4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 106067, "positionType": "LONG", "purchasedPrice": 32.05, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 1300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06251AS92", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 501, "positionType": "LONG", "purchasedPrice": 20.05, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 1213.4, "positionType": "LONG", "purchasedPrice": 60.15, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 301120, "positionType": "LONG", "purchasedPrice": 7.85, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 6400 } ], "marginBalance": 97773885.3, "nickname": "House Fund", "transactions": [ { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $250.12 PENDING REINVESTMENT", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "BBY", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $0.40 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $1.20 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $120.00 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.64, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1260008099", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.08, "description": "INTEREST ", "securityId": "949763ZT6", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1463980358", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.04, "description": "INTEREST ", "securityId": "949763ZS8", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1463980357", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -17745.7, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765316 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1463980329", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -129208.07, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1463980328", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 129208.07, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1463980292", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -439.2, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "128419223", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 15429.6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "128419224", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2240, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "802091672", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -5.94, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "802091673", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -54607.16, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 15,602,046DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "316245817", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 10.73, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411848", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 9.72, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411847", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.43, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "12811L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHW", "transactionId": "1841411846", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.59, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411844", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.44, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411843", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 9.84, "category": "IA", "description": "RETURN OF CAPITAL ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "symbol": "CHI", "transactionId": "1841411842", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.21, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411841", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 4.86, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411840", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 7.71, "category": "IA", "description": "RETURN OF CAPITAL ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "symbol": "CHY", "transactionId": "1841411839", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 18.57, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "12811L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHW", "transactionId": "1841411817", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1253.35, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765077 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1841411816", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -63923.24, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1841411814", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 63923.24, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1841411779", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 50.16, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254687106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIS", "transactionId": "1335217929", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 445.89, "description": "INTEREST ", "securityId": "909557HC7", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1335217930", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "892195915", "amount": -474, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "674599105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "OXY", "transactionId": "2008890357", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 588, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "49446R109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "KIM", "transactionId": "2008890358", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "2008890380", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 24.46, "description": "INTEREST ", "securityId": "36290SYK1", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "2008890382", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 184.85, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYK1", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "2008890383", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 24.62, "description": "INTEREST ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "2008890384", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 27.35, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "2008890385", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-089699-1 ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "GRPN", "transactionId": "462571218", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-089699-2 ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": -300, "status": "POSTED", "subCategory": "SL", "symbol": "GRPN", "transactionId": "462571217", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 320.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "462571188", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -320.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "462571187", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "806857108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SLB", "transactionId": "1632932015", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 113.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "29476L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "EQR", "transactionId": "1632932016", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3304.41, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932046", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -3304.41, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932047", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -75415.86, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932049", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 75415.86, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932084", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.18, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "844741108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "LUV", "transactionId": "844267554", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.96, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "713448108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "PEP", "transactionId": "78666490", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 445.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1773845380", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1186.61, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417864", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1186.61, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417863", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -62551.88, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417861", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 62551.88, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417826", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1557.38, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "2030312681", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -4.68, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "2030312680", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 4.68, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312654", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -4.68, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312653", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1191.29, "category": "ZZ", "description": "JOURNALED PRECIOUS METALS STORAGE CHARGE ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312652", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -0.02, "category": "DV", "description": "DIVIDEND ADJUSTMENT DIVIDEND RECEIVED ", "securityId": "315910836", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FNMIX", "transactionId": "277317660", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.62, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "277317682", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 17.5, "description": "INTEREST ", "securityId": "912828XW5", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "277317683", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.04, "description": "INTEREST ", "securityId": "15135KBM2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "277317684", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.02, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317713", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -0.02, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317714", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -49500.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317716", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 49500.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317750", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1161.58, "category": "ZZ", "description": "JOURNALED PRECIOUS METALS STORAGE CHARGE ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1551929400", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "212512418", "accountNumber": "*****4512", "accountType": "IRAB", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "IRA - BDA", "nickname": "IRA - BDA" }, { "accountId": "868876526", "accountNumber": "*****3826", "accountType": "TIC", "availableCashBalance": 12339.61, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 12339.61, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 12339.61, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 12339.61 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "868876526", "amount": -0.52, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.52, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "996008300", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "868876526", "amount": 0.52, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "996008299", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1703786627", "accountNumber": "*****8180", "accountType": "TODJ", "availableCashBalance": 919622.84, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 923895.89, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 324.34, "positionType": "LONG", "purchasedPrice": 174.97, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 34.1, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 3716, "positionType": "LONG", "purchasedPrice": 1727.67, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 2 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99375" } ], "marketValue": 245000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 245000 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99482" } ], "marketValue": 188311.34, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 188311.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 137.69, "positionType": "LONG", "purchasedPrice": 130.19, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 241311.5, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 241311.5 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99466" } ], "marketValue": 245000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 245000 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "1703786627", "amount": -39.07, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 39.07, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "577551812", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1703786627", "amount": 8, "category": "DV", "description": "CREDIT INTEREST AT PEOPLES BANK NOT COVERED BY SIPC ", "securityId": "FDIC99482", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPEOQ", "transactionId": "577551811", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.41, "category": "DV", "description": "CREDIT INTEREST GOLDMAN SACHS BANK NOT COVERED BY SIPC ", "securityId": "FDIC99466", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QGSBQ", "transactionId": "577551810", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.41, "category": "DV", "description": "CREDIT INTEREST AT CITIBANK NOT COVERED BY SIPC ", "securityId": "FDIC99375", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPCTQ", "transactionId": "577551809", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.25, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "577551808", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1058497228", "accountNumber": "*****1569", "accountType": "I", "availableCashBalance": 152738.09, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 153354.38, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 296.4, "positionType": "LONG", "purchasedPrice": 1.19, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 319.89, "positionType": "LONG", "purchasedPrice": 0.74, "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 3 }, { "averageCost": false, "cashAccount": true, "marketValue": 152738.09, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 152738.09 } ], "nickname": "Individual", "transactions": [ { "accountId": "1058497228", "amount": -171.89, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 171.89, "status": "POSTED", "subCategory": "BY", "symbol": "FDRXX", "transactionId": "220477490", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1058497228", "amount": 171.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FDRXX", "transactionId": "220477489", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1267662784", "accountNumber": "*****6789", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1157850082", "accountNumber": "*****5045", "accountType": "IRRL", "availableCashBalance": 59732.82, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 194645.91, "displayName": "Rollover IRA", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99367" } ], "marketValue": 5000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 111.6, "positionType": "LONG", "purchasedPrice": 12.16, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 12.94, "positionType": "LONG", "purchasedPrice": 39.32, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 15798, "positionType": "LONG", "purchasedPrice": 111.51, "securityId": "803054204", "securityIdType": "CUSIP", "symbol": "SAP", "units": 120 }, { "averageCost": true, "cashAccount": false, "marketValue": 22323, "positionType": "LONG", "purchasedPrice": 178.86, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 2009.22, "positionType": "LONG", "purchasedPrice": 100.37, "securityId": "912828B90", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 548.17, "positionType": "LONG", "purchasedPrice": 97.14, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 51.472 }, { "averageCost": true, "cashAccount": false, "marketValue": 1845.95, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "Y1100L160", "securityIdType": "CUSIP", "symbol": "CPAMF", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 44.3, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.64, "positionType": "LONG", "purchasedPrice": 105.8, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 47.258 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PAW6", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3280.79, "positionType": "LONG", "purchasedPrice": 10.54, "securityId": "886315712", "securityIdType": "CUSIP", "symbol": "TIORX", "units": 299.07 }, { "averageCost": true, "cashAccount": false, "marketValue": 199.4, "positionType": "LONG", "purchasedPrice": 20.71, "securityId": "477143101", "securityIdType": "CUSIP", "symbol": "JBLU", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2545.33, "positionType": "LONG", "purchasedPrice": 11.58, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 215.889 }, { "averageCost": true, "cashAccount": false, "marketValue": 3579.94, "positionType": "LONG", "purchasedPrice": 181.4, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 26 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.08, "positionType": "LONG", "purchasedPrice": 12.73, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "05275N205", "securityIdType": "CUSIP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1.6, "positionType": "LONG", "purchasedPrice": 14.62, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.8, "securityId": "94975DAB1", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 22727.67, "positionType": "LONG", "purchasedPrice": 59.96, "securityId": "31617K287", "securityIdType": "CUSIP", "symbol": "FIRRX", "units": 416.945 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99490" } ], "marketValue": 54732.82, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 54732.82 }, { "averageCost": true, "cashAccount": false, "marketValue": 46942.18, "positionType": "LONG", "purchasedPrice": 26.98, "securityId": "316145101", "securityIdType": "CUSIP", "symbol": "FEQTX", "units": 1853.225 }, { "averageCost": true, "cashAccount": false, "marketValue": 76.48, "positionType": "LONG", "purchasedPrice": 69.31, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5658, "positionType": "LONG", "purchasedPrice": 221.82, "securityId": "91324P102", "securityIdType": "CUSIP", "symbol": "UNH", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 6486.8, "positionType": "LONG", "purchasedPrice": 134.76, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 20 } ], "nickname": "ROLLOVER IRA", "transactions": [ { "accountId": "1157850082", "amount": -0.01, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 0.01, "status": "POSTED", "subCategory": "BY", "symbol": "QPUBQ", "transactionId": "972051701", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1157850082", "amount": 0.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "972051702", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1157850082", "amount": -5.07, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 5.07, "status": "POSTED", "subCategory": "BY", "symbol": "QPUBQ", "transactionId": "751693667", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1157850082", "amount": 4.65, "category": "DV", "description": "CREDIT INTEREST PEOPLES BANK IRA NOT COVERED BY SIPC ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPUBQ", "transactionId": "751693668", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1157850082", "amount": 0.42, "category": "DV", "description": "CREDIT INTEREST AT CITIBANK IRA NOT COVERED BY SIPC ", "securityId": "FDIC99367", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPCBQ", "transactionId": "751693669", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1857010597", "accountNumber": "*****5068", "accountType": "I", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "668076213", "accountNumber": "*****2036", "accountType": "ROTH", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "ROTH IRA", "nickname": "ROTH IRA" }, { "accountId": "1267662877", "accountNumber": "*****6786", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1881890174", "accountNumber": "*****9220", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 195554.8, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 110570.4, "positionType": "LONG", "purchasedPrice": 99, "securityId": "082887PE4", "securityIdType": "CUSIP", "units": 90000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5147.65, "positionType": "LONG", "purchasedPrice": 100, "securityId": "9128282Y5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10343.11, "positionType": "LONG", "purchasedPrice": 0.74, "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 97 }, { "averageCost": true, "cashAccount": false, "marketValue": 4469.08, "positionType": "LONG", "purchasedPrice": 95, "securityId": "79875YCP4", "securityIdType": "CUSIP", "units": 3500 }, { "averageCost": true, "cashAccount": false, "marketValue": 136.06, "positionType": "LONG", "purchasedPrice": 118.21, "securityId": "254687106", "securityIdType": "CUSIP", "symbol": "DIS", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 8.86, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 275.38, "positionType": "LONG", "purchasedPrice": 160.34, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 17.1, "positionType": "LONG", "purchasedPrice": 4.31, "securityId": "92912L107", "securityIdType": "CUSIP", "symbol": "VJET", "units": 9 }, { "averageCost": true, "cashAccount": false, "marketValue": 63289.8, "positionType": "LONG", "purchasedPrice": 91.5, "securityId": "050589HT0", "securityIdType": "CUSIP", "units": 60000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.67, "securityId": "1008524D1", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 1297.36, "positionType": "LONG", "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 4 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "1881890174", "amount": 0.88, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254687106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIS", "transactionId": "707741860", "transactionTimestamp": 1579150800, "unitPrice": 0 } ] }, { "accountId": "360171549", "accountNumber": "*****1184", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1729634.12, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1148609.98, "positionType": "LONG", "purchasedPrice": 1.36, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 8342 }, { "averageCost": true, "cashAccount": false, "marketValue": 36.66, "positionType": "LONG", "purchasedPrice": 42.43, "securityId": "464289883", "securityIdType": "CUSIP", "symbol": "AOK", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 50, "positionType": "LONG", "purchasedPrice": 90.52, "securityId": "783549108", "securityIdType": "CUSIP", "symbol": "R", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 57.68, "positionType": "LONG", "purchasedPrice": 65.49, "securityId": "46435G326", "securityIdType": "CUSIP", "symbol": "IDEV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 73.58, "positionType": "LONG", "purchasedPrice": 103.54, "securityId": "92204A306", "securityIdType": "CUSIP", "symbol": "VDE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 75.01, "positionType": "LONG", "purchasedPrice": 78.5, "securityId": "92204A405", "securityIdType": "CUSIP", "symbol": "VFH", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 37.08, "securityId": "29273R109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 150.3, "positionType": "LONG", "purchasedPrice": 129.4, "securityId": "922908637", "securityIdType": "CUSIP", "symbol": "VV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4254.3, "positionType": "LONG", "purchasedPrice": 49.92, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 90 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.03, "positionType": "LONG", "purchasedPrice": 25.19, "securityId": "225401108", "securityIdType": "CUSIP", "symbol": "CS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 19120, "positionType": "LONG", "purchasedPrice": 70.57, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 250 }, { "averageCost": true, "cashAccount": false, "marketValue": 40.44, "positionType": "LONG", "purchasedPrice": 46.44, "securityId": "464289875", "securityIdType": "CUSIP", "symbol": "AOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 64.7, "positionType": "LONG", "purchasedPrice": 29.17, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 67.08, "positionType": "LONG", "purchasedPrice": 72.04, "securityId": "92206C706", "securityIdType": "CUSIP", "symbol": "VGIT", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 160.16, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4861.32, "positionType": "LONG", "purchasedPrice": 94.31, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 66.804 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.69, "positionType": "LONG", "purchasedPrice": 142.24, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 41.41, "securityId": "12673P105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 57.87, "positionType": "LONG", "purchasedPrice": 67.28, "securityId": "46434V696", "securityIdType": "CUSIP", "symbol": "IPAC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 797.37, "positionType": "LONG", "purchasedPrice": 593.03, "securityId": "017175100", "securityIdType": "CUSIP", "symbol": "Y", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 155.75, "positionType": "LONG", "purchasedPrice": 99.02, "securityId": "256677105", "securityIdType": "CUSIP", "symbol": "DG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 20.24, "positionType": "LONG", "purchasedPrice": 22.9, "securityId": "49926D109", "securityIdType": "CUSIP", "symbol": "KN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 27.29, "positionType": "LONG", "purchasedPrice": 50.48, "securityId": "419879101", "securityIdType": "CUSIP", "symbol": "HA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 124.83, "positionType": "LONG", "purchasedPrice": 10.59, "securityId": "74348T102", "securityIdType": "CUSIP", "symbol": "PSEC", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 86.72, "positionType": "LONG", "purchasedPrice": 69.65, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 156.32, "positionType": "LONG", "purchasedPrice": 148.13, "securityId": "92204A603", "securityIdType": "CUSIP", "symbol": "VIS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 840.2, "positionType": "LONG", "purchasedPrice": 10.95, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 336476.01, "positionType": "LONG", "purchasedPrice": 302801.45, "securityId": "084670108", "securityIdType": "CUSIP", "symbol": "BRKA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.05, "positionType": "LONG", "purchasedPrice": 16.68, "securityId": "16944W104", "securityIdType": "CUSIP", "symbol": "DL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1701.15, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 88.23, "positionType": "LONG", "purchasedPrice": 72.53, "securityId": "747525103", "securityIdType": "CUSIP", "symbol": "QCOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.44, "positionType": "LONG", "purchasedPrice": 96.41, "securityId": "209115104", "securityIdType": "CUSIP", "symbol": "ED", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 88.96, "positionType": "LONG", "purchasedPrice": 92, "securityId": "921937819", "securityIdType": "CUSIP", "symbol": "BIV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 11.7, "positionType": "LONG", "purchasedPrice": 30.9, "securityId": "60649T107", "securityIdType": "CUSIP", "symbol": "MG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.09, "positionType": "LONG", "purchasedPrice": 61.83, "securityId": "922042775", "securityIdType": "CUSIP", "symbol": "VEU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 322.02, "positionType": "LONG", "purchasedPrice": 287.34, "securityId": "097023105", "securityIdType": "CUSIP", "symbol": "BA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 287.29, "positionType": "LONG", "purchasedPrice": 251.86, "securityId": "78467X109", "securityIdType": "CUSIP", "symbol": "DIA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.01, "positionType": "LONG", "purchasedPrice": 8.38, "securityId": "09173Y107", "securityIdType": "CUSIP", "symbol": "BTSC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 190.99, "positionType": "LONG", "purchasedPrice": 163.06, "securityId": "92204A108", "securityIdType": "CUSIP", "symbol": "VCR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 86.54, "positionType": "LONG", "purchasedPrice": 92.13, "securityId": "224399105", "securityIdType": "CUSIP", "symbol": "CR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53546.4, "positionType": "LONG", "purchasedPrice": 40, "securityId": "902973304", "securityIdType": "CUSIP", "symbol": "USB", "units": 999 }, { "averageCost": true, "cashAccount": false, "marketValue": 3143, "positionType": "LONG", "purchasedPrice": 203.44, "securityId": "084670702", "securityIdType": "CUSIP", "symbol": "BRKB", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 40.26, "securityId": "12674R100", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 11053.45, "positionType": "LONG", "purchasedPrice": 13.17, "securityId": "316089507", "securityIdType": "CUSIP", "symbol": "FHIGX", "units": 812.157 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 18.97, "securityId": "G21107100", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 52.9, "positionType": "LONG", "purchasedPrice": 58.77, "securityId": "46434V613", "securityIdType": "CUSIP", "symbol": "IUSB", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 945.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 31 }, { "averageCost": true, "cashAccount": false, "marketValue": 275.8, "positionType": "LONG", "purchasedPrice": 19.69, "securityId": "48242W106", "securityIdType": "CUSIP", "symbol": "KBR", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.36, "positionType": "LONG", "purchasedPrice": 52.19, "securityId": "922042858", "securityIdType": "CUSIP", "symbol": "VWO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 160.64, "positionType": "LONG", "purchasedPrice": 153.53, "securityId": "92204A207", "securityIdType": "CUSIP", "symbol": "VDC", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "38259P706", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2169.96, "positionType": "LONG", "purchasedPrice": 33.72, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 153.138 }, { "averageCost": true, "cashAccount": false, "marketValue": 62.17, "positionType": "LONG", "purchasedPrice": 63.15, "securityId": "464287663", "securityIdType": "CUSIP", "symbol": "IUSV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 950, "positionType": "LONG", "purchasedPrice": 3.54, "securityId": "92912L107", "securityIdType": "CUSIP", "symbol": "VJET", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 44.47, "positionType": "LONG", "purchasedPrice": 40.13, "securityId": "G3922B107", "securityIdType": "CUSIP", "symbol": "G", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 142.4, "positionType": "LONG", "purchasedPrice": 64.26, "securityId": "464289479", "securityIdType": "CUSIP", "symbol": "ILTB", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 115.42, "positionType": "LONG", "purchasedPrice": 66.27, "securityId": "922042874", "securityIdType": "CUSIP", "symbol": "VGK", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 715.08, "positionType": "LONG", "purchasedPrice": 7.14, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.18, "positionType": "LONG", "purchasedPrice": 19.86, "securityId": "242370203", "securityIdType": "CUSIP", "symbol": "DFODQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 73.71, "positionType": "LONG", "purchasedPrice": 60.74, "securityId": "464287150", "securityIdType": "CUSIP", "symbol": "ITOT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4865.1, "positionType": "LONG", "purchasedPrice": 149.35, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 40.27, "positionType": "LONG", "purchasedPrice": 44.9, "securityId": "125269100", "securityIdType": "CUSIP", "symbol": "CF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1116, "positionType": "LONG", "purchasedPrice": 11.44, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 100 }, { "averageCost": false, "cashAccount": false, "marketValue": 653.24, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 68.83, "positionType": "LONG", "purchasedPrice": 82.4, "securityId": "194162103", "securityIdType": "CUSIP", "symbol": "CL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4964.33, "positionType": "LONG", "purchasedPrice": 25.23, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 198.177 }, { "averageCost": true, "cashAccount": false, "marketValue": 191.93, "positionType": "LONG", "purchasedPrice": 161.27, "securityId": "92204A504", "securityIdType": "CUSIP", "symbol": "VHT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 111.93, "positionType": "LONG", "purchasedPrice": 114.79, "securityId": "150870103", "securityIdType": "CUSIP", "symbol": "CE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 602.93, "positionType": "LONG", "purchasedPrice": 189.59, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 27.888 }, { "averageCost": true, "cashAccount": false, "marketValue": 204.32, "positionType": "LONG", "purchasedPrice": 189.64, "securityId": "464287507", "securityIdType": "CUSIP", "symbol": "IJH", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 49.08, "positionType": "LONG", "purchasedPrice": 50.48, "securityId": "53567X101", "securityIdType": "CUSIP", "symbol": "LN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 64.51, "positionType": "LONG", "purchasedPrice": 65.46, "securityId": "46432F842", "securityIdType": "CUSIP", "symbol": "IEFA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 45.95, "positionType": "LONG", "purchasedPrice": 49, "securityId": "808513105", "securityIdType": "CUSIP", "symbol": "SCHW", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.28, "positionType": "LONG", "purchasedPrice": 55.3, "securityId": "23703Q203", "securityIdType": "CUSIP", "symbol": "DQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 109.13, "positionType": "LONG", "purchasedPrice": 124.57, "securityId": "922042718", "securityIdType": "CUSIP", "symbol": "VSS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 141.84, "positionType": "LONG", "purchasedPrice": 129.12, "securityId": "921910709", "securityIdType": "CUSIP", "symbol": "EDV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.38, "positionType": "LONG", "purchasedPrice": 25.53, "securityId": "427825500", "securityIdType": "CUSIP", "symbol": "HT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 92.9, "positionType": "LONG", "purchasedPrice": 95.34, "securityId": "92206C870", "securityIdType": "CUSIP", "symbol": "VCIT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38522AAX4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.4, "positionType": "LONG", "purchasedPrice": 12.87, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 72.03, "positionType": "LONG", "purchasedPrice": 73.31, "securityId": "921946810", "securityIdType": "CUSIP", "symbol": "VIGI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 127.18, "positionType": "LONG", "purchasedPrice": 119.26, "securityId": "922908652", "securityIdType": "CUSIP", "symbol": "VXF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.99, "positionType": "LONG", "purchasedPrice": 97.79, "securityId": "46429B663", "securityIdType": "CUSIP", "symbol": "HDV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 82.74, "positionType": "LONG", "purchasedPrice": 102.77, "securityId": "136069101", "securityIdType": "CUSIP", "symbol": "CM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2434.86, "positionType": "LONG", "purchasedPrice": 2.52, "securityId": "04878Q863", "securityIdType": "CUSIP", "symbol": "AT", "units": 1002 }, { "averageCost": true, "cashAccount": false, "marketValue": 112.21, "positionType": "LONG", "purchasedPrice": 109.05, "securityId": "285512109", "securityIdType": "CUSIP", "symbol": "EA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 119412.15, "positionType": "LONG", "purchasedPrice": 1.12, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 3223 }, { "averageCost": true, "cashAccount": false, "marketValue": 3.4, "positionType": "LONG", "purchasedPrice": 12.5, "securityId": "381370105", "securityIdType": "CUSIP", "symbol": "GV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 263.98, "positionType": "LONG", "purchasedPrice": 184.4, "securityId": "13645T100", "securityIdType": "CUSIP", "symbol": "CP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.94, "positionType": "LONG", "purchasedPrice": 35.95, "securityId": "629337106", "securityIdType": "CUSIP", "symbol": "NNBR", "units": 1 } ], "marginBalance": 1729634.11, "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "360171549", "amount": 0.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1623188241", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "360171549", "amount": 1.14, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74348T102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "PSEC", "transactionId": "1283351706", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.32, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "256677105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DG", "transactionId": "1728016774", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "360171549", "amount": -1353.32, "category": "IA", "description": "MARGIN INTEREST @ 8.825% AVG BAL 262,886DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1728016772", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "360171549", "amount": 419.58, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "902973304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "USB", "transactionId": "597119453", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "48242W106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "KBR", "transactionId": "597119454", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.28, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "427825500", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HT", "transactionId": "597119455", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 9.46, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "597119456", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.87, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "78467X109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIA", "transactionId": "1874342145", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.17, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464289883", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AOK", "transactionId": "537909984", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464289875", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AOM", "transactionId": "537909983", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": -25.28, "category": "DV", "description": "REINVESTMENT REINVEST @ $13.400", "securityId": "316089507", "securityIdType": "CUSIP", "shares": 1.887, "status": "POSTED", "subCategory": "RN", "symbol": "FHIGX", "transactionId": "537909982", "transactionTimestamp": 1577768400, "unitPrice": 13.4 }, { "accountId": "360171549", "amount": 25.28, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316089507", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FHIGX", "transactionId": "537909981", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.66, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908652", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VXF", "transactionId": "736701704", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.77, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908637", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VV", "transactionId": "736701705", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1747769917", "accountNumber": "*****3817", "accountType": "TODI", "availableCashBalance": 151501.71, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 2816339.99, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.22, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 102 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 41.2, "securityId": "966244105", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.17, "securityId": "754055101", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": 2714.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 89 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.05, "securityId": "627335102", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": false, "cashAccount": true, "marketValue": 151501.71, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 151501.71 }, { "averageCost": true, "cashAccount": false, "marketValue": 496.41, "positionType": "LONG", "purchasedPrice": 103.76, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 22.961 }, { "averageCost": true, "cashAccount": false, "marketValue": 18163.04, "positionType": "LONG", "purchasedPrice": 116.66, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 56 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.22, "positionType": "LONG", "purchasedPrice": 0.58, "securityId": "58463A105", "securityIdType": "CUSIP", "symbol": "MJNA", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": 5130.9, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 90 }, { "averageCost": true, "cashAccount": false, "marketValue": 78377.76, "positionType": "LONG", "purchasedPrice": 54.21, "securityId": "063671101", "securityIdType": "CUSIP", "symbol": "BMO:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 306.7, "positionType": "LONG", "purchasedPrice": 1.05, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 278.7 }, { "averageCost": true, "cashAccount": false, "marketValue": 116249.6, "positionType": "LONG", "purchasedPrice": 72.41, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 1520 }, { "averageCost": true, "cashAccount": false, "marketValue": 1529.52, "positionType": "LONG", "purchasedPrice": 190.32, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 2904.95, "positionType": "LONG", "purchasedPrice": 272.72, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.4, "positionType": "LONG", "purchasedPrice": 2.78, "securityId": "282644202", "securityIdType": "CUSIP", "symbol": "EKSO", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 2176878.9, "positionType": "LONG", "purchasedPrice": 0.02, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 15810 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.76, "positionType": "LONG", "purchasedPrice": 45.96, "securityId": "31634R109", "securityIdType": "CUSIP", "symbol": "FFNOX", "units": 0.683 }, { "averageCost": true, "cashAccount": false, "marketValue": 5394.8, "positionType": "LONG", "purchasedPrice": 100, "securityId": "073059PP6", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 46.63, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 21341.08, "positionType": "LONG", "purchasedPrice": 111.82, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 127 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 36.15, "securityId": "29273R109", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.8, "positionType": "LONG", "purchasedPrice": 0.62, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 1342.3, "positionType": "LONG", "purchasedPrice": 103.61, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "98411L100", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1254.38, "positionType": "LONG", "purchasedPrice": 18.09, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 38 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.45, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 47.51, "positionType": "LONG", "purchasedPrice": 33.01, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5506.25, "positionType": "LONG", "purchasedPrice": 100, "securityId": "073059PM3", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 21326, "positionType": "LONG", "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3910, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1167.2, "positionType": "LONG", "purchasedPrice": 198.87, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1903.55, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.52, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "87336U105", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 901.96, "positionType": "LONG", "purchasedPrice": 11.5, "securityId": "31617K105", "securityIdType": "CUSIP", "symbol": "FGMNX", "units": 77.957 }, { "averageCost": true, "cashAccount": false, "marketValue": 129, "positionType": "LONG", "purchasedPrice": 89.56, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 11.05, "securityId": "36290SZB0", "securityIdType": "CUSIP", "units": 200000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 798.15, "securityId": "741503403", "securityIdType": "CUSIP", "units": 378 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 885.31, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 31.66, "securityId": "268648102", "securityIdType": "CUSIP", "units": 1400 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 585.33, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 443.62, "positionType": "LONG", "purchasedPrice": 191.73, "securityId": "46090E103", "securityIdType": "CUSIP", "symbol": "QQQ", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.43, "securityId": "74019L107", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1578.68, "positionType": "LONG", "purchasedPrice": 26.39, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 122 }, { "averageCost": true, "cashAccount": false, "marketValue": 5566.95, "positionType": "LONG", "purchasedPrice": 5.9, "securityId": "36290SYJ4", "securityIdType": "CUSIP", "units": 85000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2592, "positionType": "LONG", "purchasedPrice": 16.29, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 900 }, { "averageCost": true, "cashAccount": false, "marketValue": 771.52, "positionType": "LONG", "purchasedPrice": 126.92, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 135.82, "positionType": "LONG", "purchasedPrice": 17.84, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 7.601 }, { "averageCost": true, "cashAccount": false, "marketValue": 179655.45, "positionType": "LONG", "purchasedPrice": 1.19, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 4849 }, { "averageCost": true, "cashAccount": false, "marketValue": 2003.79, "positionType": "LONG", "purchasedPrice": 99.87, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 27.536 }, { "averageCost": false, "cashAccount": false, "marketValue": 1633.1, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.41, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 } ], "nickname": "TestAccount", "transactions": [ { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $0.50 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $1.50 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $0.30 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 1.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "872611846", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -48.08, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765083 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1454015563", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -839.09, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 839.09, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1898680635", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1747769917", "amount": 27.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "1898680634", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 20.93, "description": "INTEREST ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1898680633", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 23.24, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "1898680632", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -169.61, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 169.61, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "75174937", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1747769917", "amount": 815.85, "category": "IA", "description": "YOU SOLD ", "securityId": "459200101", "securityIdType": "CUSIP", "shares": -6, "status": "POSTED", "subCategory": "SL", "symbol": "IBM", "transactionId": "75174936", "transactionTimestamp": 1578891600, "unitPrice": 135.978 }, { "accountId": "1747769917", "amount": 169.61, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2020328299", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -169.61, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2020328300", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0.92, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "46090E103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "QQQ", "transactionId": "598301443", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 161, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "598301442", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0.85, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "598301441", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1177379104", "accountNumber": "*****7428", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1704763220", "accountNumber": "*****9317", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 142826.9, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "04560QAH9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10047.4, "positionType": "LONG", "purchasedPrice": 100.09, "securityId": "663332BD5", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11902.7, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "00206RHK1", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10484.2, "positionType": "LONG", "purchasedPrice": 100.14, "securityId": "821686T85", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "87638RCR6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 9991.6, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "06048WZH6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10000, "positionType": "LONG", "purchasedPrice": 100.12, "securityId": "36250CCL6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10000, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "37046AAD7", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.11, "securityId": "02153LAA2", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8208.8, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "76116EHN3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10016.9, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "770587DN0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10250.8, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "06741RDS7", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10037.8, "positionType": "LONG", "purchasedPrice": 100.11, "securityId": "657458FC4", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 9920.6, "positionType": "LONG", "purchasedPrice": 100.15, "securityId": "95001D2T6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "828373FT2", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "17326YU87", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10361, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "55336VAQ3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11397.9, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "862121AB6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "005594AF3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10206.2, "positionType": "LONG", "purchasedPrice": 100.1, "securityId": "72205RBV3", "securityIdType": "CUSIP", "units": 10000 } ], "nickname": "Individual" }, { "accountId": "868876557", "accountNumber": "*****3827", "accountType": "J", "availableCashBalance": 3743.67, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 19878.85, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 324, "positionType": "LONG", "purchasedPrice": 205.43, "securityId": "88579Y101", "securityIdType": "CUSIP", "symbol": "MMM", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 2697.03, "positionType": "LONG", "purchasedPrice": 23.22, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 107.666 }, { "averageCost": true, "cashAccount": false, "marketValue": 99.84, "positionType": "LONG", "purchasedPrice": 85.77, "securityId": "654106103", "securityIdType": "CUSIP", "symbol": "NKE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1742.97, "positionType": "LONG", "purchasedPrice": 95.12, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.67, "securityId": "767754104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.8, "positionType": "LONG", "purchasedPrice": 19.95, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 87.24, "positionType": "LONG", "purchasedPrice": 84.92, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 550.76, "positionType": "LONG", "purchasedPrice": 72.79, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 19.02, "positionType": "LONG", "purchasedPrice": 10.41, "securityId": "09228F103", "securityIdType": "CUSIP", "symbol": "BB", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 59.82, "positionType": "LONG", "purchasedPrice": 11.97, "securityId": "477143101", "securityIdType": "CUSIP", "symbol": "JBLU", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 903, "positionType": "LONG", "purchasedPrice": 28.53, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 528.72, "positionType": "LONG", "purchasedPrice": 12.71, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 5513.78, "positionType": "LONG", "purchasedPrice": 11.61, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 17 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 42.07, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3199.56, "positionType": "LONG", "purchasedPrice": 3.03, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 145.6, "positionType": "LONG", "purchasedPrice": 35.11, "securityId": "26874R108", "securityIdType": "CUSIP", "symbol": "E", "units": 5 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 3743.67, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 3743.67 }, { "averageCost": true, "cashAccount": false, "marketValue": 229.44, "positionType": "LONG", "purchasedPrice": 65.96, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 3 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "868876557", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "1719647396", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.18, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1719647395", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -3, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 3, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "1641102466", "transactionTimestamp": 1578373200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 3, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "1641102467", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -0.25, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.25, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "310543723", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "654106103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "NKE", "transactionId": "310543722", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -0.16, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.16, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "587184075", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.16, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "587184074", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1704022165", "accountNumber": "*****8953", "accountType": "I", "availableCashBalance": 110406.26, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": -163377.91, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "26138EAN9", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": true, "marketValue": 107695.77, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 107695.77 }, { "averageCost": false, "cashAccount": false, "marketValue": 1772, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2519.12, "positionType": "LONG", "purchasedPrice": 109.31, "securityId": "02361DAM2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6366.42, "positionType": "LONG", "purchasedPrice": 100.31, "securityId": "023608AG7", "securityIdType": "CUSIP", "units": 6000 }, { "averageCost": true, "cashAccount": false, "marketValue": -327771.9, "positionType": "LONG", "purchasedPrice": 278.7, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": -999 }, { "averageCost": true, "cashAccount": false, "marketValue": 22976, "positionType": "LONG", "purchasedPrice": 164.64, "securityId": "08862E109", "securityIdType": "CUSIP", "symbol": "BYND", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3415.79, "positionType": "LONG", "purchasedPrice": 11.77, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 241.058 }, { "averageCost": true, "cashAccount": false, "marketValue": 5856.5, "positionType": "LONG", "purchasedPrice": 99.06, "securityId": "00115AAF6", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.08, "positionType": "LONG", "purchasedPrice": 38.92, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 348.96, "positionType": "LONG", "purchasedPrice": 75.36, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 10.02, "positionType": "LONG", "purchasedPrice": 16.23, "securityId": "31617R605", "securityIdType": "CUSIP", "symbol": "FFFDX", "units": 0.616 }, { "averageCost": true, "cashAccount": false, "marketValue": 446.46, "positionType": "LONG", "purchasedPrice": 170.72, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 1306.48, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 39.52, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 177.06, "positionType": "LONG", "purchasedPrice": 68.78, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 700.32, "positionType": "LONG", "purchasedPrice": 203.55, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 10600.5, "positionType": "LONG", "purchasedPrice": 98.28, "securityId": "00115AAE9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 100.49, "positionType": "LONG", "purchasedPrice": 10.16, "securityId": "31635T104", "securityIdType": "CUSIP", "symbol": "FIPDX", "units": 9.843 } ], "marginBalance": 56698.22, "nickname": "Individual", "transactions": [ { "accountId": "1704022165", "amount": 2710.49, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "PENDING", "subCategory": "OC", "transactionId": "1734553606", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2710.49, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "PENDING", "subCategory": "OC", "transactionId": "1734553606", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4301.05, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 4301.05, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "23140582", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 4301.05, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "23140583", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4301.05, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "23140584", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1047.58, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1047.58, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "147428213", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1047.58, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "147428212", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1047.58, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "147428211", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -449.55, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "351400443", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 449.55, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "351400442", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1767.69, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1767.69, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1240999134", "transactionTimestamp": 1579755600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1768.41, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1240999135", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1768.41, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1240999136", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1176.42, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1176.42, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1914671585", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 0.72, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1914671586", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1175.7, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1914671588", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1175.7, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1914671589", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1690.01, "category": "IA", "description": "YOU SOLD MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1690.01, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "796334064", "transactionTimestamp": 1579582800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X15-678953-1 ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": 9.843, "status": "POSTED", "subCategory": "BY", "symbol": "FIPDX", "transactionId": "796334065", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X15-678953-2 ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": -9.843, "status": "POSTED", "subCategory": "SL", "symbol": "FIPDX", "transactionId": "796334066", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1690.01, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "796334067", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1690.01, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "796334068", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3223.59, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -3223.59, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "728831932", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 3223.59, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831931", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3223.59, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831930", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4345.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831929", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 4345.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831928", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -593.24, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 593.24, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1847169451", "transactionTimestamp": 1579150800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 593.24, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1847169450", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -593.24, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1847169449", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -631.29, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 631.29, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1173496999", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 731.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1173496997", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -731.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1173496996", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3075.92, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -3075.92, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1768346217", "transactionTimestamp": 1578978000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": -100, "category": "IA", "description": "YOU BOUGHT PROSPECTUS UNDER SEPARATE COVER ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": 9.843, "status": "POSTED", "subCategory": "BY", "symbol": "FIPDX", "transactionId": "1768346218", "transactionTimestamp": 1578978000, "unitPrice": 10.16 }, { "accountId": "1704022165", "amount": 3075.92, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1768346219", "transactionTimestamp": 1578978000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3075.92, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1768346220", "transactionTimestamp": 1578978000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2121.29, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2121.29, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "650008697", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2121.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "650008698", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2121.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "650008699", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1663.68, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1663.68, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1549455365", "transactionTimestamp": 1578632400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1663.68, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455364", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1663.68, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455363", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1728.27, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455362", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1728.27, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455361", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 2616.3, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -2616.3, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1136869039", "transactionTimestamp": 1578546000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2616.3, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1136869038", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2616.3, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1136869037", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2472.84, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2472.84, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "715642837", "transactionTimestamp": 1578459600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2472.84, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "715642838", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2472.84, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "715642839", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1885.42, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1885.42, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1481243897", "transactionTimestamp": 1578373200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1885.42, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1481243898", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1885.42, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1481243899", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3429.33, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 3429.33, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "961211523", "transactionTimestamp": 1578286800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 3429.33, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "961211522", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3429.33, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "961211521", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 4016.32, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -4016.32, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "630492497", "transactionTimestamp": 1578027600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 4016.32, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492498", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4016.32, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492499", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3806.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492500", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3806.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492501", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 801.29, "category": "IA", "description": "YOU SOLD MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -801.29, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "470402292", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 801.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "470402291", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -801.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "470402290", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2048.55, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2048.55, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "407554728", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": -127.46, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 127.46, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "407554729", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 127.46, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "407554730", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 2048.55, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554731", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2048.55, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554732", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1808.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554733", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1808.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554734", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 14.36, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -14.36, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1682166416", "transactionTimestamp": 1577682000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 14.36, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1682166417", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -14.36, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1682166418", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1857906280", "accountNumber": "*****4147", "accountType": "TODJ", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Joint WROS - TOD", "nickname": "Joint WROS - TOD" }, { "accountId": "1747852718", "accountNumber": "*****3582", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 77506952.72, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1.92, "positionType": "LONG", "purchasedPrice": 11.58, "securityId": "56382Q102", "securityIdType": "CUSIP", "symbol": "MN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.2, "positionType": "LONG", "purchasedPrice": 12.89, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 29 }, { "averageCost": true, "cashAccount": false, "marketValue": 45.14, "positionType": "LONG", "purchasedPrice": 19.93, "securityId": "81141R100", "securityIdType": "CUSIP", "symbol": "SE", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 350910.56, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 2191 }, { "averageCost": false, "cashAccount": false, "marketValue": -18147, "positionType": "LONG", "securityId": "20825C104", "securityIdType": "CUSIP", "symbol": "COP", "units": -300 }, { "averageCost": true, "cashAccount": false, "marketValue": 140.4, "positionType": "LONG", "purchasedPrice": 41.93, "securityId": "464287374", "securityIdType": "CUSIP", "symbol": "IGE", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 29826.25, "positionType": "LONG", "purchasedPrice": 17.59, "securityId": "315910844", "securityIdType": "CUSIP", "symbol": "FLATX", "units": 1021.797 }, { "averageCost": true, "cashAccount": false, "marketValue": 157.75, "positionType": "LONG", "purchasedPrice": 141.53, "securityId": "92206C623", "securityIdType": "CUSIP", "symbol": "VTWG", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": -181750.8, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": -1320 }, { "averageCost": true, "cashAccount": false, "marketValue": 2280, "positionType": "LONG", "purchasedPrice": 4.71, "securityId": "85207U105", "securityIdType": "CUSIP", "symbol": "S", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 56.6, "securityId": "464288455", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 26.1, "positionType": "LONG", "purchasedPrice": 25.92, "securityId": "80283M101", "securityIdType": "CUSIP", "symbol": "SC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.86, "securityId": "912796PE3", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8427, "positionType": "LONG", "purchasedPrice": 88.75, "securityId": "037411105", "securityIdType": "CUSIP", "symbol": "APA", "units": 300 }, { "averageCost": false, "cashAccount": false, "marketValue": 62634, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 10439 }, { "averageCost": true, "cashAccount": false, "marketValue": 118.45, "positionType": "LONG", "purchasedPrice": 113.48, "securityId": "922908744", "securityIdType": "CUSIP", "symbol": "VTV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5745.8, "positionType": "LONG", "purchasedPrice": 213.91, "securityId": "78467X109", "securityIdType": "CUSIP", "symbol": "DIA", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 1962, "positionType": "LONG", "purchasedPrice": 49.67, "securityId": "G5480U120", "securityIdType": "CUSIP", "symbol": "LBTYK", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9454, "positionType": "LONG", "purchasedPrice": 34.84, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 98.32, "securityId": "78355W874", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 970.72, "positionType": "LONG", "purchasedPrice": 56.47, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 16 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.3, "securityId": "713661304", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.88, "securityId": "536020100", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2341, "positionType": "LONG", "purchasedPrice": 20.49, "securityId": "41013W108", "securityIdType": "CUSIP", "symbol": "HPI", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 10177, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06610PBV4", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": 42161.4, "positionType": "LONG", "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 5955 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.12, "positionType": "LONG", "purchasedPrice": 1.74, "securityId": "G3204Q160", "securityIdType": "CUSIP", "symbol": "ECYGF", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.92, "securityId": "3137EADG1", "securityIdType": "CUSIP", "units": 52000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1468.35, "positionType": "LONG", "purchasedPrice": 9.32, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 251 }, { "averageCost": true, "cashAccount": false, "marketValue": 2500.34, "positionType": "LONG", "purchasedPrice": 23.03, "securityId": "92646A252", "securityIdType": "CUSIP", "symbol": "MUXAX", "units": 119.405 }, { "averageCost": true, "cashAccount": false, "marketValue": 27906.44, "positionType": "LONG", "purchasedPrice": 30.83, "securityId": "Q0604U105", "securityIdType": "CUSIP", "symbol": "ASXFF", "units": 503 }, { "averageCost": true, "cashAccount": false, "marketValue": 108.2, "positionType": "LONG", "purchasedPrice": 118.8, "securityId": "92206C649", "securityIdType": "CUSIP", "symbol": "VTWV", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 4331, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 142 }, { "averageCost": true, "cashAccount": false, "marketValue": 70.1, "positionType": "LONG", "purchasedPrice": 58.19, "securityId": "842587107", "securityIdType": "CUSIP", "symbol": "SO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1624294.72, "positionType": "LONG", "purchasedPrice": 37.54, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 5008 }, { "averageCost": true, "cashAccount": false, "marketValue": 336476.01, "positionType": "LONG", "purchasedPrice": 223258.82, "securityId": "084670108", "securityIdType": "CUSIP", "symbol": "BRKA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1029.48, "positionType": "LONG", "purchasedPrice": 310.45, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1276.1, "positionType": "LONG", "purchasedPrice": 44.59, "securityId": "464287549", "securityIdType": "CUSIP", "symbol": "IGM", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 3726.2, "positionType": "LONG", "purchasedPrice": 345.72, "securityId": "78467Y107", "securityIdType": "CUSIP", "symbol": "MDY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.65, "positionType": "LONG", "purchasedPrice": 26.41, "securityId": "80007P869", "securityIdType": "CUSIP", "symbol": "SD", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": -132887.7, "positionType": "LONG", "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": -990 }, { "averageCost": true, "cashAccount": false, "marketValue": 274.1, "positionType": "LONG", "purchasedPrice": 28.89, "securityId": "33737J109", "securityIdType": "CUSIP", "symbol": "FPA", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "02587CFV7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 11.01, "securityId": "464286673", "securityIdType": "CUSIP", "units": -2 }, { "averageCost": true, "cashAccount": false, "marketValue": -430, "positionType": "LONG", "purchasedPrice": 4.94, "securityId": "3867919BZ", "securityIdType": "CUSIP", "symbol": "-IBM210115C150", "units": -1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5964.75, "positionType": "LONG", "purchasedPrice": 10.78, "securityId": "316390863", "securityIdType": "CUSIP", "symbol": "FSELX", "units": 463.822 }, { "averageCost": false, "cashAccount": false, "marketValue": 11704, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 220 }, { "averageCost": true, "cashAccount": false, "marketValue": 2317.2, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "023111206", "securityIdType": "CUSIP", "symbol": "AMRN", "units": 120 }, { "averageCost": true, "cashAccount": false, "marketValue": 5913, "positionType": "LONG", "purchasedPrice": 26.44, "securityId": "059520106", "securityIdType": "CUSIP", "symbol": "BCH", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.17, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 1582 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 92.1, "securityId": "922908553", "securityIdType": "CUSIP", "symbol": "VNQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1920.96, "positionType": "LONG", "purchasedPrice": 219.9, "securityId": "38141G104", "securityIdType": "CUSIP", "symbol": "GS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 866, "positionType": "LONG", "purchasedPrice": 35.58, "securityId": "681936100", "securityIdType": "CUSIP", "symbol": "OHI", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.3, "positionType": "LONG", "purchasedPrice": 15.51, "securityId": "85208J109", "securityIdType": "CUSIP", "symbol": "FUND", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 151.04, "positionType": "LONG", "purchasedPrice": 131.61, "securityId": "92204A876", "securityIdType": "CUSIP", "symbol": "VPU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1440, "positionType": "LONG", "purchasedPrice": 3.51, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 10113, "positionType": "LONG", "purchasedPrice": 51.13, "securityId": "98389B100", "securityIdType": "CUSIP", "symbol": "XEL", "units": 150 }, { "averageCost": false, "cashAccount": false, "marketValue": 47730, "positionType": "LONG", "securityId": "98954M200", "securityIdType": "CUSIP", "symbol": "Z", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 40795, "positionType": "LONG", "purchasedPrice": 33.44, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -10 }, { "averageCost": true, "cashAccount": false, "marketValue": 81.11, "positionType": "LONG", "purchasedPrice": 81.28, "securityId": "922042742", "securityIdType": "CUSIP", "symbol": "VT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 165.51, "positionType": "LONG", "purchasedPrice": 155.24, "securityId": "922908751", "securityIdType": "CUSIP", "symbol": "VB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 479056.5, "positionType": "LONG", "purchasedPrice": 1.34, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 12930 }, { "averageCost": true, "cashAccount": false, "marketValue": 361.26, "positionType": "LONG", "purchasedPrice": 108.23, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "080515CZ0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.73, "securityId": "984121103", "securityIdType": "CUSIP", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 4545.06, "positionType": "LONG", "purchasedPrice": 44.32, "securityId": "G5821P111", "securityIdType": "CUSIP", "symbol": "DLG:DE", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 71.83, "securityId": "74876Y101", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 19769.9, "positionType": "LONG", "purchasedPrice": 63.45, "securityId": "783554835", "securityIdType": "CUSIP", "symbol": "RYOAX", "units": 281.302 }, { "averageCost": true, "cashAccount": false, "marketValue": 1032.42, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURZAR112", "securityIdType": "CUSIP", "symbol": "ZAR", "units": 15077.71 }, { "averageCost": true, "cashAccount": false, "marketValue": 5.53, "positionType": "LONG", "purchasedPrice": 42.63, "securityId": "53635B107", "securityIdType": "CUSIP", "symbol": "LQDT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 287.3, "positionType": "LONG", "purchasedPrice": 27.08, "securityId": "895436103", "securityIdType": "CUSIP", "symbol": "TY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 148.15, "positionType": "LONG", "purchasedPrice": 141.76, "securityId": "921932869", "securityIdType": "CUSIP", "symbol": "IVOG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 81.9, "positionType": "LONG", "purchasedPrice": 19.15, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "080515CZ0", "securityIdType": "CUSIP", "units": 29000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 63.06, "securityId": "25490A309", "securityIdType": "CUSIP", "units": 600 }, { "averageCost": true, "cashAccount": false, "marketValue": 229033.98, "positionType": "LONG", "purchasedPrice": 107.93, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 1026 }, { "averageCost": true, "cashAccount": false, "marketValue": 17360.96, "positionType": "LONG", "purchasedPrice": 52.06, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 227 }, { "averageCost": true, "cashAccount": false, "marketValue": 69997.56, "positionType": "LONG", "purchasedPrice": 14.42, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 604 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.32, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 65, "positionType": "LONG", "purchasedPrice": 1.9, "securityId": "G3204Q285", "securityIdType": "CUSIP", "symbol": "ETSYF", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "48128FA77", "securityIdType": "CUSIP", "units": 7000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "3133EC5V2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6.58, "positionType": "LONG", "purchasedPrice": 10.85, "securityId": "33812L102", "securityIdType": "CUSIP", "symbol": "FIT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.05, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2000, "positionType": "LONG", "purchasedPrice": 98.59, "securityId": "26138EAQ2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2054.79, "positionType": "LONG", "purchasedPrice": 9.68, "securityId": "921659108", "securityIdType": "CUSIP", "symbol": "VNDA", "units": 153 }, { "averageCost": true, "cashAccount": false, "marketValue": -20537.19, "positionType": "LONG", "purchasedPrice": 63.13, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": -153 }, { "averageCost": true, "cashAccount": false, "marketValue": 234.42, "positionType": "LONG", "purchasedPrice": 67.77, "securityId": "756109104", "securityIdType": "CUSIP", "symbol": "O", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 131.73, "positionType": "LONG", "purchasedPrice": 130.38, "securityId": "92206C664", "securityIdType": "CUSIP", "symbol": "VTWO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 68164.04, "positionType": "LONG", "purchasedPrice": 59.98, "securityId": "31617K287", "securityIdType": "CUSIP", "symbol": "FIRRX", "units": 1250.487 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "26441CAD7", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 180.37, "positionType": "LONG", "purchasedPrice": 161.55, "securityId": "922908629", "securityIdType": "CUSIP", "symbol": "VO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 71265, "positionType": "LONG", "purchasedPrice": 4.34, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 5216.1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "792895G73", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.24, "securityId": "013817101", "securityIdType": "CUSIP", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 47.95, "securityId": "19761R307", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 7920, "positionType": "LONG", "purchasedPrice": 12.63, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 2750 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 46.84, "securityId": "G05384105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 6402, "positionType": "LONG", "purchasedPrice": 9.81, "securityId": "760975102", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4228.8, "positionType": "LONG", "purchasedPrice": 1.54, "securityId": "CURGBP141", "securityIdType": "CUSIP", "symbol": "GBP", "units": 3250.43 }, { "averageCost": true, "cashAccount": false, "marketValue": 166.06, "positionType": "LONG", "purchasedPrice": 143.84, "securityId": "922908769", "securityIdType": "CUSIP", "symbol": "VTI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 641.4, "positionType": "LONG", "purchasedPrice": 63.27, "securityId": "110122108", "securityIdType": "CUSIP", "symbol": "BMY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 4095.72, "positionType": "LONG", "purchasedPrice": 14.52, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 367 }, { "averageCost": true, "cashAccount": false, "marketValue": 4.49, "positionType": "LONG", "purchasedPrice": 11.42, "securityId": "48283N106", "securityIdType": "CUSIP", "symbol": "KDMN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 550.8, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 699 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 18.62, "securityId": "020875803", "securityIdType": "CUSIP", "units": 822.771 }, { "averageCost": false, "cashAccount": false, "marketValue": 4623511, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 81100 }, { "averageCost": false, "cashAccount": false, "marketValue": -5604, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": -934 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 29.8, "securityId": "G1154H107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 7392717.08, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 22634 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.54, "securityId": "90262H239", "securityIdType": "CUSIP", "units": 336.061 }, { "averageCost": false, "cashAccount": false, "marketValue": -62711, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": -1100 }, { "averageCost": true, "cashAccount": false, "marketValue": -22179.2, "positionType": "LONG", "purchasedPrice": 17.27, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": -290 }, { "averageCost": true, "cashAccount": false, "marketValue": 4000, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763VJ2", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 570, "positionType": "LONG", "purchasedPrice": 7.91, "securityId": "3867919MK", "securityIdType": "CUSIP", "symbol": "-IBM210115C145", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 34.15, "securityId": "18383M100", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 626.05, "positionType": "LONG", "purchasedPrice": 64.83, "securityId": "81369Y407", "securityIdType": "CUSIP", "symbol": "XLY", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 21.86, "positionType": "LONG", "purchasedPrice": 32.95, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1004.01, "positionType": "LONG", "purchasedPrice": 1, "securityId": "90348JFV7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11358.19, "positionType": "LONG", "purchasedPrice": 11.39, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 963.375 }, { "averageCost": true, "cashAccount": false, "marketValue": 98.85, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 768.33 }, { "averageCost": true, "cashAccount": false, "marketValue": 644.73, "positionType": "LONG", "purchasedPrice": 16.09, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 36.079 }, { "averageCost": false, "cashAccount": false, "marketValue": 54587062.81, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 396449 }, { "averageCost": true, "cashAccount": false, "marketValue": 41.53, "positionType": "LONG", "purchasedPrice": 47.33, "securityId": "78469C103", "securityIdType": "CUSIP", "symbol": "SP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 9040.2, "positionType": "LONG", "purchasedPrice": 442.81, "securityId": "29444U700", "securityIdType": "CUSIP", "symbol": "EQIX", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 118.83, "positionType": "LONG", "purchasedPrice": 118.66, "securityId": "922908512", "securityIdType": "CUSIP", "symbol": "VOE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 60.36, "securityId": "50076Q106", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.97, "securityId": "24702R101", "securityIdType": "CUSIP", "units": 208 }, { "averageCost": false, "cashAccount": false, "marketValue": 1055160, "positionType": "LONG", "securityId": "169656105", "securityIdType": "CUSIP", "symbol": "CMG", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 134.85, "positionType": "LONG", "purchasedPrice": 141.14, "securityId": "922908611", "securityIdType": "CUSIP", "symbol": "VBR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 24.87, "positionType": "LONG", "purchasedPrice": 18.84, "securityId": "18469Q108", "securityIdType": "CUSIP", "symbol": "CTR", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 10242.6, "positionType": "LONG", "purchasedPrice": 96.97, "securityId": "3130A0EN6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 133.78, "securityId": "73935A104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.62, "securityId": "767754104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3496.39, "positionType": "LONG", "purchasedPrice": 52.58, "securityId": "360876106", "securityIdType": "CUSIP", "symbol": "FUNDX", "units": 57.056 }, { "averageCost": false, "cashAccount": false, "marketValue": 18233.6, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 407 }, { "averageCost": true, "cashAccount": false, "marketValue": 5360, "positionType": "LONG", "purchasedPrice": 47.31, "securityId": "902973304", "securityIdType": "CUSIP", "symbol": "USB", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": -90.3, "positionType": "LONG", "purchasedPrice": 5.84, "securityId": "55262C100", "securityIdType": "CUSIP", "symbol": "MBI", "units": -10 }, { "averageCost": false, "cashAccount": false, "marketValue": -59020, "positionType": "LONG", "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 76.32, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 32.757 }, { "averageCost": true, "cashAccount": false, "marketValue": 2017.98, "positionType": "LONG", "purchasedPrice": 100.04, "securityId": "594918AH7", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.52, "positionType": "LONG", "purchasedPrice": 60.48, "securityId": "92206C771", "securityIdType": "CUSIP", "symbol": "VMBS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 778.67, "positionType": "LONG", "purchasedPrice": 0.94, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 1028.16 }, { "averageCost": true, "cashAccount": false, "marketValue": 54.44, "positionType": "LONG", "purchasedPrice": 59.54, "securityId": "922907746", "securityIdType": "CUSIP", "symbol": "VTEB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "172967KE0", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6470, "positionType": "LONG", "purchasedPrice": 56.12, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "33648GAQ6", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5776.7, "positionType": "LONG", "purchasedPrice": 109.11, "securityId": "00344NKS2", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 187.87, "positionType": "LONG", "purchasedPrice": 143.78, "securityId": "92206C680", "securityIdType": "CUSIP", "symbol": "VONG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 67620, "positionType": "LONG", "purchasedPrice": 2.13, "securityId": "313586109", "securityIdType": "CUSIP", "symbol": "FNMA", "units": 21000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 47.99, "securityId": "G5480U153", "securityIdType": "CUSIP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 5289.85, "positionType": "LONG", "purchasedPrice": 103.44, "securityId": "64986AS28", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": -101080, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -1900 }, { "averageCost": true, "cashAccount": false, "marketValue": 3458, "positionType": "LONG", "purchasedPrice": 28.57, "securityId": "278642103", "securityIdType": "CUSIP", "symbol": "EBAY", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 4397.62, "positionType": "LONG", "purchasedPrice": 0.78, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 6515.96 }, { "averageCost": true, "cashAccount": false, "marketValue": 682, "positionType": "LONG", "purchasedPrice": 21.39, "securityId": "313855108", "securityIdType": "CUSIP", "symbol": "FSS", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 149.94, "positionType": "LONG", "purchasedPrice": 129.26, "securityId": "92206C730", "securityIdType": "CUSIP", "symbol": "VONE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -0.8, "positionType": "LONG", "purchasedPrice": 0.17, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": -1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "084601QX4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4951.5, "positionType": "LONG", "purchasedPrice": 21.18, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 150 }, { "averageCost": true, "cashAccount": false, "marketValue": 6273101.24, "positionType": "LONG", "purchasedPrice": 4.19, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 37331 }, { "averageCost": true, "cashAccount": false, "marketValue": 96.62, "positionType": "LONG", "purchasedPrice": 100.58, "securityId": "92204A884", "securityIdType": "CUSIP", "symbol": "VOX", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 372, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 62 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 108.55, "securityId": "53578A108", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 5328, "positionType": "LONG", "purchasedPrice": 30.05, "securityId": "23703Q203", "securityIdType": "CUSIP", "symbol": "DQ", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 18.76, "positionType": "LONG", "purchasedPrice": 43.64, "securityId": "129500104", "securityIdType": "CUSIP", "symbol": "CAL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3249.93, "positionType": "LONG", "purchasedPrice": 47.62, "securityId": "316390475", "securityIdType": "CUSIP", "symbol": "FSMEX", "units": 52.52 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.93, "securityId": "34958B106", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 5283.83, "positionType": "LONG", "purchasedPrice": 185.25, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 38 }, { "averageCost": true, "cashAccount": false, "marketValue": 2329.43, "positionType": "LONG", "purchasedPrice": 24.08, "securityId": "316390442", "securityIdType": "CUSIP", "symbol": "FPHAX", "units": 99.294 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.58, "securityId": "912318201", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.12, "securityId": "044102101", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 249, "positionType": "LONG", "purchasedPrice": 8.9, "securityId": "044103109", "securityIdType": "CUSIP", "symbol": "AHT", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 85.28, "positionType": "LONG", "purchasedPrice": 89.52, "securityId": "921937835", "securityIdType": "CUSIP", "symbol": "BND", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 300.15, "positionType": "LONG", "purchasedPrice": 250.81, "securityId": "922908363", "securityIdType": "CUSIP", "symbol": "VOO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -86876.68, "positionType": "LONG", "purchasedPrice": 20.8, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -517 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.8, "securityId": "013817101", "securityIdType": "CUSIP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 113430.7, "positionType": "LONG", "purchasedPrice": 78.99, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 535 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "010237EL5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4208.57, "positionType": "LONG", "purchasedPrice": 187.16, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 194.661 }, { "averageCost": true, "cashAccount": false, "marketValue": 98.6, "positionType": "LONG", "purchasedPrice": 80.44, "securityId": "464288851", "securityIdType": "CUSIP", "symbol": "IEO", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 1249.75, "positionType": "LONG", "purchasedPrice": 82.88, "securityId": "464287515", "securityIdType": "CUSIP", "symbol": "IGV", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 26628, "positionType": "LONG", "purchasedPrice": 68.45, "securityId": "25179M103", "securityIdType": "CUSIP", "symbol": "DVN", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 73833.46, "positionType": "LONG", "purchasedPrice": 102.55, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 5210.548 }, { "averageCost": true, "cashAccount": false, "marketValue": 2689.72, "positionType": "LONG", "purchasedPrice": 15.1, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 252.556 }, { "averageCost": true, "cashAccount": false, "marketValue": 198857.34, "positionType": "LONG", "purchasedPrice": 26.17, "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 2998 }, { "averageCost": true, "cashAccount": false, "marketValue": 5128.8, "positionType": "LONG", "purchasedPrice": 83.67, "securityId": "30231G102", "securityIdType": "CUSIP", "symbol": "XOM", "units": 80 }, { "averageCost": true, "cashAccount": false, "marketValue": 622.58, "positionType": "LONG", "purchasedPrice": 18.63, "securityId": "G3922B107", "securityIdType": "CUSIP", "symbol": "G", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 732.9, "positionType": "LONG", "purchasedPrice": 57.7, "securityId": "33733E302", "securityIdType": "CUSIP", "symbol": "FDN", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 586.07, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 331 }, { "averageCost": true, "cashAccount": false, "marketValue": 437010, "positionType": "LONG", "purchasedPrice": 1960.28, "securityId": "02079K305", "securityIdType": "CUSIP", "symbol": "GOOGL", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 21.35, "securityId": "86933G105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4089.04, "positionType": "LONG", "purchasedPrice": 22.88, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 316 }, { "averageCost": true, "cashAccount": false, "marketValue": 137.99, "positionType": "LONG", "purchasedPrice": 135.84, "securityId": "921932885", "securityIdType": "CUSIP", "symbol": "IVOO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1078.32, "positionType": "LONG", "purchasedPrice": 81.37, "securityId": "03073E105", "securityIdType": "CUSIP", "symbol": "ABC", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 7575.8, "positionType": "LONG", "purchasedPrice": 34910.79, "securityId": "09857L108", "securityIdType": "CUSIP", "symbol": "BKNG", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 21506.12, "positionType": "LONG", "purchasedPrice": 70.52, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 223 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.61, "positionType": "LONG", "purchasedPrice": 0.99, "securityId": "06827T104", "securityIdType": "CUSIP", "symbol": "BCAP", "units": 6100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9334, "positionType": "LONG", "purchasedPrice": 56.52, "securityId": "278265103", "securityIdType": "CUSIP", "symbol": "EV", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 92196.1, "positionType": "LONG", "purchasedPrice": 202.45, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 281 }, { "averageCost": true, "cashAccount": false, "marketValue": 27848.38, "positionType": "LONG", "purchasedPrice": 171.69, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 119 }, { "averageCost": true, "cashAccount": false, "marketValue": 24828.05, "positionType": "LONG", "purchasedPrice": 1.47, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 22560.7 }, { "averageCost": true, "cashAccount": false, "marketValue": -261.72, "positionType": "LONG", "purchasedPrice": 34.29, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -3 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 150.41, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2086.3, "positionType": "LONG", "purchasedPrice": 92.7, "securityId": "001055AQ5", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1176.25, "positionType": "LONG", "purchasedPrice": 10.26, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 202.01, "positionType": "LONG", "purchasedPrice": 166.97, "securityId": "922908595", "securityIdType": "CUSIP", "symbol": "VBK", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1505.46, "positionType": "LONG", "purchasedPrice": 30.04, "securityId": "487836108", "securityIdType": "CUSIP", "symbol": "K", "units": 22 }, { "averageCost": true, "cashAccount": false, "marketValue": 8715.63, "positionType": "LONG", "purchasedPrice": 79.29, "securityId": "751212101", "securityIdType": "CUSIP", "symbol": "RL", "units": 77 }, { "averageCost": true, "cashAccount": false, "marketValue": 10911.3, "positionType": "LONG", "purchasedPrice": 106.31, "securityId": "01025PBT9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": -750572.76, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": -2298 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 230.82, "securityId": "740189105", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 472.97, "positionType": "LONG", "purchasedPrice": 45.59, "securityId": "97717W877", "securityIdType": "CUSIP", "symbol": "DEW", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": -41841.1, "positionType": "LONG", "securityId": "25746U109", "securityIdType": "CUSIP", "symbol": "D", "units": -490 }, { "averageCost": true, "cashAccount": false, "marketValue": 130722.75, "positionType": "LONG", "purchasedPrice": 120.02, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 225 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "741503403", "securityIdType": "CUSIP", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": -4022, "positionType": "LONG", "purchasedPrice": 35.97, "securityId": "87971M103", "securityIdType": "CUSIP", "symbol": "TU", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 19.44, "positionType": "LONG", "purchasedPrice": 8.3, "securityId": "04878Q863", "securityIdType": "CUSIP", "symbol": "AT", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 12764.73, "positionType": "LONG", "purchasedPrice": 21.21, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 550.679 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "48128FA77", "securityIdType": "CUSIP", "units": 9000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6163.91, "positionType": "LONG", "purchasedPrice": 86.67, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 84.704 }, { "averageCost": true, "cashAccount": false, "marketValue": 273.36, "positionType": "LONG", "purchasedPrice": 34.59, "securityId": "464287531", "securityIdType": "CUSIP", "symbol": "IGN", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 22296, "positionType": "LONG", "purchasedPrice": 430.07, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 240.65, "positionType": "LONG", "purchasedPrice": 39.01, "securityId": "33734X119", "securityIdType": "CUSIP", "symbol": "FXG", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.29, "securityId": "48660Q102", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 775.05, "positionType": "LONG", "purchasedPrice": 48.63, "securityId": "540424108", "securityIdType": "CUSIP", "symbol": "L", "units": 15 } ], "marginBalance": 78710524.94, "nickname": "Option Level 7", "transactions": [ { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $150.00 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $450.00 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $1500.00 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 3.16, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1599148919", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -7422.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1803121124", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 7422.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1803121119", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 52.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "210721573", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -456, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "210721572", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 8.75, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "462950878", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -0.54, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "462950879", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 60.75, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "98389B100", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "XEL", "transactionId": "655386642", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 2.42, "description": "INTEREST ", "securityId": "90348JFV7", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "655386641", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "EXPIRED CALL (S) SPRINT CORPORATION ", "securityId": "3434179PJ", "securityIdType": "CUSIP", "shares": -2, "status": "POSTED", "subCategory": "SL", "symbol": "S200117C7", "transactionId": "655386639", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3434179MG", "securityIdType": "CUSIP", "shares": 2, "status": "POSTED", "subCategory": "BY", "symbol": "S200117P7", "transactionId": "655386638", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3392429VT", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "IBM200117C125", "transactionId": "655386637", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -1404.95, "category": "IA", "description": "YOU BOUGHT ASSIGNED PUTS AS OF 01-17-20 ", "securityId": "85207U105", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "S", "transactionId": "655386615", "transactionTimestamp": 1579582800, "unitPrice": 7 }, { "accountId": "1747852718", "amount": 12494.79, "category": "IA", "description": "YOU SOLD ASSIGNED CALLS AS OF 01-17-20 ", "securityId": "459200101", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "IBM", "transactionId": "655386614", "transactionTimestamp": 1579582800, "unitPrice": 125 }, { "accountId": "1747852718", "amount": -11074.9, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 3,164,258DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "655386613", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -13777.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2114414686", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 13777.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2114414692", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 42, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "902973304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "USB", "transactionId": "1669749589", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.68, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "756109104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "O", "transactionId": "1669749590", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 43.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "1669749591", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "044103109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AHT", "transactionId": "1669749592", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 20, "description": "INTEREST ", "securityId": "26138EAQ2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1669749593", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 17.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "78467X109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIA", "transactionId": "801712009", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 52.94, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "751212101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "RL", "transactionId": "1293791230", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -7502.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1293791253", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 7502.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1293791258", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.07, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "129500104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CAL", "transactionId": "1171605871", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1306.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1270849517", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -1306.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1270849516", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -891, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "46625H100", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "JPM", "transactionId": "505248484", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 19.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248480", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -19.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248458", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 891, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248457", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -891, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248456", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 297, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1347263419", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -297, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1347263420", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 293.49, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "360876106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FUNDX", "transactionId": "1355999880", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 277.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999878", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -277.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999856", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -16003.47, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999855", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 16003.47, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999849", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 4.93, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "33737J109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FPA", "transactionId": "1646113269", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1.29, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "33734X119", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FXG", "transactionId": "1646113268", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 23.64, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1646113267", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 79.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113261", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -79.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113239", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -8847.3, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113238", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 8847.3, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113233", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908769", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VTI", "transactionId": "371501609", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908751", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VB", "transactionId": "371501608", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.91, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908744", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VTV", "transactionId": "371501586", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.99, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908629", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VO", "transactionId": "371501585", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908611", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VBR", "transactionId": "371501584", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.45, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908595", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VBK", "transactionId": "371501583", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.84, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908512", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VOE", "transactionId": "371501582", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 9.64, "description": "INTEREST ", "securityId": "949763VJ2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "371501581", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 24.66, "description": "INTEREST ", "securityId": "06610PBV4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "371501579", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 2434639.67, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "371501554", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -2434639.67, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "371501553", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1857695883", "accountNumber": "*****4865", "accountType": "I", "availableCashBalance": 10.22, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 10.22, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 10.22, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 10.22 } ], "nickname": "Individual", "transactions": [ { "accountId": "1857695883", "amount": -0.01, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.01, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "543441869", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1857695883", "amount": 0.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "543441870", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1177379073", "accountNumber": "*****7429", "accountType": "IRA", "availableCashBalance": 200, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 200, "displayName": "Traditional IRA", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99516" } ], "marketValue": 200, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 200 } ], "nickname": "Traditional IRA", "transactions": [ { "accountId": "1177379073", "amount": -200, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99516", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "QOKIQ", "transactionId": "1734530416", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1177379073", "amount": 100, "category": "IA", "description": "CONTRIB PRIOR YEAR VS X21-988808-1 PRIOR CONTRIBUTION ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1734530417", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1177379073", "amount": 100, "category": "IA", "description": "CONTRIB CURRENT YR VS X21-988808-1 CURRENT CONTRIBUTION", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1734530418", "transactionTimestamp": 1579237200, "unitPrice": 0 } ] }, { "accountId": "1747770816", "accountNumber": "*****3809", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 8957659.52, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 111720, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 2100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.86, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 617 }, { "averageCost": true, "cashAccount": false, "marketValue": 124761, "positionType": "LONG", "purchasedPrice": 31.09, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 1300 }, { "averageCost": true, "cashAccount": false, "marketValue": 3681.98, "positionType": "LONG", "purchasedPrice": 22.03, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 158.843 }, { "averageCost": true, "cashAccount": false, "marketValue": 1728, "positionType": "LONG", "purchasedPrice": 11.87, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 600 }, { "averageCost": true, "cashAccount": false, "marketValue": 16167.06, "positionType": "LONG", "purchasedPrice": 12.82, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 1974 }, { "averageCost": true, "cashAccount": false, "marketValue": 7432, "positionType": "LONG", "purchasedPrice": 1646.02, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 207.4, "positionType": "LONG", "purchasedPrice": 1, "securityId": "CURCHF138", "securityIdType": "CUSIP", "symbol": "CHF", "units": 201.97 }, { "averageCost": true, "cashAccount": false, "marketValue": 1392.31, "positionType": "LONG", "purchasedPrice": 16.1, "securityId": "316390863", "securityIdType": "CUSIP", "symbol": "FSELX", "units": 108.267 }, { "averageCost": true, "cashAccount": false, "marketValue": 517.6, "positionType": "LONG", "purchasedPrice": 55.61, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 5264.29, "positionType": "LONG", "purchasedPrice": 15.43, "securityId": "315910562", "securityIdType": "CUSIP", "symbol": "FSCOX", "units": 259.197 }, { "averageCost": true, "cashAccount": false, "marketValue": 6220, "positionType": "LONG", "purchasedPrice": 8.11, "securityId": "302635107", "securityIdType": "CUSIP", "symbol": "FSK", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 45450.65, "positionType": "LONG", "purchasedPrice": 46.23, "securityId": "G5821P111", "securityIdType": "CUSIP", "symbol": "DLG:DE", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 30.01, "positionType": "LONG", "purchasedPrice": 11.67, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 2.546 }, { "averageCost": true, "cashAccount": false, "marketValue": 7575.75, "positionType": "LONG", "purchasedPrice": 12.01, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 925 }, { "averageCost": true, "cashAccount": false, "marketValue": 9704.91, "positionType": "LONG", "purchasedPrice": 11.67, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 823.148 }, { "averageCost": true, "cashAccount": false, "marketValue": 6.88, "positionType": "LONG", "purchasedPrice": 2.92, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 7 }, { "averageCost": false, "cashAccount": false, "marketValue": 1098, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 36 }, { "averageCost": false, "cashAccount": false, "marketValue": 3960.59, "positionType": "LONG", "securityId": "4812C1561", "securityIdType": "CUSIP", "symbol": "OLVAX", "units": 260.223 }, { "averageCost": false, "cashAccount": false, "marketValue": 87012, "positionType": "LONG", "securityId": "453836108", "securityIdType": "CUSIP", "symbol": "INDB", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 73937.6, "positionType": "LONG", "purchasedPrice": 7.5, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 440 }, { "averageCost": true, "cashAccount": false, "marketValue": 41.3, "positionType": "LONG", "purchasedPrice": 96.63, "securityId": "F00189120", "securityIdType": "CUSIP", "symbol": "AC:FR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 24332.07, "positionType": "LONG", "purchasedPrice": 77.79, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 109 }, { "averageCost": true, "cashAccount": false, "marketValue": 973.33, "positionType": "LONG", "purchasedPrice": 167.85, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 18009, "positionType": "LONG", "purchasedPrice": 196.56, "securityId": "38141G104", "securityIdType": "CUSIP", "symbol": "GS", "units": 75 }, { "averageCost": true, "cashAccount": false, "marketValue": 580.99, "positionType": "LONG", "purchasedPrice": 228.43, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 18940, "positionType": "LONG", "purchasedPrice": 17.45, "securityId": "04010L103", "securityIdType": "CUSIP", "symbol": "ARCC", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 89.86, "positionType": "LONG", "purchasedPrice": 92.92, "securityId": "03073E105", "securityIdType": "CUSIP", "symbol": "ABC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 62985, "positionType": "LONG", "purchasedPrice": 1.03, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 1700 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.78, "securityId": "582411104", "securityIdType": "CUSIP", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 177.06, "positionType": "LONG", "purchasedPrice": 63.83, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 97.5, "positionType": "LONG", "purchasedPrice": 0.15, "securityId": "CURDKK032", "securityIdType": "CUSIP", "symbol": "DKK", "units": 662.07 }, { "averageCost": true, "cashAccount": false, "marketValue": 485.36, "positionType": "LONG", "purchasedPrice": 65.06, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.98, "positionType": "LONG", "purchasedPrice": 9.23, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 903.24, "positionType": "LONG", "securityId": "478160104", "securityIdType": "CUSIP", "symbol": "JNJ", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 118775, "positionType": "LONG", "purchasedPrice": 142.91, "securityId": "697435105", "securityIdType": "CUSIP", "symbol": "PANW", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": -47880, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -900 }, { "averageCost": true, "cashAccount": false, "marketValue": 15221.86, "positionType": "LONG", "purchasedPrice": 22.02, "securityId": "316200203", "securityIdType": "CUSIP", "symbol": "FDEGX", "units": 292.447 }, { "averageCost": true, "cashAccount": false, "marketValue": 152.96, "positionType": "LONG", "purchasedPrice": 71.2, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 7508.32, "positionType": "LONG", "purchasedPrice": 34.3, "securityId": "464286400", "securityIdType": "CUSIP", "symbol": "EWZ", "units": 167 }, { "averageCost": true, "cashAccount": false, "marketValue": 11730, "positionType": "LONG", "purchasedPrice": 6.4, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 56316, "positionType": "LONG", "purchasedPrice": 1.07, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 1520 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 63.72, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9076.36, "positionType": "LONG", "purchasedPrice": 34.05, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 103 }, { "averageCost": true, "cashAccount": false, "marketValue": 1226.9, "positionType": "LONG", "purchasedPrice": 4.44, "securityId": "893662106", "securityIdType": "CUSIP", "symbol": "TGL:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "41421DQT6", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8610.14, "positionType": "LONG", "purchasedPrice": 101.42, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 118.32 }, { "averageCost": true, "cashAccount": false, "marketValue": 510, "positionType": "LONG", "purchasedPrice": 2.41, "securityId": "95766K109", "securityIdType": "CUSIP", "symbol": "HIO", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7748, "positionType": "LONG", "purchasedPrice": 20.97, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": -111150, "positionType": "LONG", "purchasedPrice": 38.8, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": -3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 936.08, "positionType": "LONG", "purchasedPrice": 46.96, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 4 }, { "averageCost": false, "cashAccount": false, "marketValue": 67076.8, "positionType": "LONG", "securityId": "928563402", "securityIdType": "CUSIP", "symbol": "VMW", "units": 452 }, { "averageCost": false, "cashAccount": false, "marketValue": -943.98, "positionType": "LONG", "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": -857.77 }, { "averageCost": true, "cashAccount": false, "marketValue": 4.8, "positionType": "LONG", "purchasedPrice": 14.7, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 54808, "positionType": "LONG", "purchasedPrice": 268.35, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2736, "positionType": "LONG", "purchasedPrice": 27.46, "securityId": "46435G474", "securityIdType": "CUSIP", "symbol": "FALN", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 174.88, "positionType": "LONG", "purchasedPrice": 7.89, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 23162.3, "positionType": "LONG", "purchasedPrice": 26.72, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 490 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.47, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 1479.62, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 167 }, { "averageCost": false, "cashAccount": false, "marketValue": 5320, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 985.74, "positionType": "LONG", "purchasedPrice": 1.53, "securityId": "CURGBP141", "securityIdType": "CUSIP", "symbol": "GBP", "units": 757.68 }, { "averageCost": true, "cashAccount": false, "marketValue": 1.6, "positionType": "LONG", "purchasedPrice": 0.11, "securityId": "CURSEK127", "securityIdType": "CUSIP", "symbol": "SEK", "units": 15.43 }, { "averageCost": true, "cashAccount": false, "marketValue": 3034.72, "positionType": "LONG", "purchasedPrice": 108.03, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 13 }, { "averageCost": true, "cashAccount": false, "marketValue": 1134, "positionType": "LONG", "purchasedPrice": 21.71, "securityId": "219350105", "securityIdType": "CUSIP", "symbol": "GLW", "units": 40 }, { "averageCost": true, "cashAccount": false, "marketValue": 956.65, "positionType": "LONG", "purchasedPrice": 50.27, "securityId": "46429B333", "securityIdType": "CUSIP", "symbol": "GNMA", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 64.14, "securityId": "677862104", "securityIdType": "CUSIP", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.1, "positionType": "LONG", "purchasedPrice": 18.57, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 3339670.95, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 24255 }, { "averageCost": false, "cashAccount": false, "marketValue": 19379.36, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 121 }, { "averageCost": true, "cashAccount": false, "marketValue": -12285, "positionType": "LONG", "purchasedPrice": 8.38, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": -1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 2296.7, "positionType": "LONG", "purchasedPrice": 200.2, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 2639.76, "positionType": "LONG", "purchasedPrice": 25.21, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 204 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.97, "securityId": "013817101", "securityIdType": "CUSIP", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.7, "positionType": "LONG", "purchasedPrice": 24.22, "securityId": "L72967109", "securityIdType": "CUSIP", "symbol": "OEC", "units": 30 }, { "averageCost": true, "cashAccount": false, "marketValue": 5681.85, "positionType": "LONG", "purchasedPrice": 1785.19, "securityId": "09857L108", "securityIdType": "CUSIP", "symbol": "BKNG", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": -288, "positionType": "LONG", "purchasedPrice": 2.87, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": -100 }, { "averageCost": false, "cashAccount": false, "marketValue": 1306.48, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 843.5, "positionType": "LONG", "purchasedPrice": 33.77, "securityId": "55616P104", "securityIdType": "CUSIP", "symbol": "M", "units": 50 }, { "averageCost": true, "cashAccount": false, "marketValue": -27404, "positionType": "LONG", "purchasedPrice": 268.73, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": -100 }, { "averageCost": false, "cashAccount": false, "marketValue": 12, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 4825.57, "positionType": "LONG", "purchasedPrice": 78.16, "securityId": "78355Y508", "securityIdType": "CUSIP", "symbol": "RYTTX", "units": 31.985 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.79, "securityId": "723456109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 26422.92, "positionType": "LONG", "purchasedPrice": 20.06, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 228 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.25, "positionType": "LONG", "purchasedPrice": 43.51, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 174.36, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1792.45, "positionType": "LONG", "purchasedPrice": 86.62, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 168.306 }, { "averageCost": true, "cashAccount": false, "marketValue": 14098.72, "positionType": "LONG", "purchasedPrice": 0.93, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 18615.95 }, { "averageCost": true, "cashAccount": false, "marketValue": 610.68, "positionType": "LONG", "purchasedPrice": 144.88, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 21768.49, "positionType": "LONG", "purchasedPrice": 20.42, "securityId": "G12583111", "securityIdType": "CUSIP", "symbol": "BHMDF", "units": 810 }, { "averageCost": true, "cashAccount": false, "marketValue": 26926.54, "positionType": "LONG", "purchasedPrice": 83.26, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 127 }, { "averageCost": true, "cashAccount": false, "marketValue": 2411, "positionType": "LONG", "purchasedPrice": 33.35, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 722.52, "positionType": "LONG", "purchasedPrice": 19.95, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 136871.48, "positionType": "LONG", "purchasedPrice": 106.35, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 422 }, { "averageCost": true, "cashAccount": false, "marketValue": 33769.23, "positionType": "LONG", "purchasedPrice": 15.92, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1023 }, { "averageCost": false, "cashAccount": false, "marketValue": 448, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.4, "positionType": "LONG", "purchasedPrice": 12.81, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 27404, "positionType": "LONG", "purchasedPrice": 268.1, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 29.59, "positionType": "LONG", "purchasedPrice": 86.62, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 2.779 }, { "averageCost": true, "cashAccount": false, "marketValue": 1048.81, "positionType": "LONG", "purchasedPrice": 369.82, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 6.76 }, { "averageCost": true, "cashAccount": false, "marketValue": 11427, "positionType": "LONG", "purchasedPrice": 124.5, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.23, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 55.26, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 121 }, { "averageCost": true, "cashAccount": false, "marketValue": 2880, "positionType": "LONG", "purchasedPrice": 12.36, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 86085.1, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 1510 }, { "averageCost": true, "cashAccount": false, "marketValue": 81590, "positionType": "LONG", "purchasedPrice": 65.77, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 433.6, "positionType": "LONG", "purchasedPrice": 47.99, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 11161, "positionType": "LONG", "purchasedPrice": 63.08, "securityId": "H57312649", "securityIdType": "CUSIP", "symbol": "NSRGF", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7580.24, "positionType": "LONG", "purchasedPrice": 15.84, "securityId": "00089H106", "securityIdType": "CUSIP", "symbol": "ACSAY", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 343.16, "positionType": "LONG", "purchasedPrice": 336.91, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2340.94, "positionType": "LONG", "purchasedPrice": 16.19, "securityId": "315910836", "securityIdType": "CUSIP", "symbol": "FNMIX", "units": 154.416 }, { "averageCost": false, "cashAccount": false, "marketValue": 4262056.26, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 30954 } ], "marginBalance": 5527282.17, "nickname": "Jim K's OrderMarking test", "transactions": [ { "accountId": "1747770816", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 7.38, "category": "IA", "description": "YOU SOLD ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38846 }, { "accountId": "1747770816", "amount": 833.88, "category": "IA", "description": "YOU SOLD ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -100, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38846 }, { "accountId": "1747770816", "amount": 8378.32, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -1000, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38346 }, { "accountId": "1747770816", "amount": 4191.68, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -500, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.39346 }, { "accountId": "1747770816", "amount": 1752.05, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -1752.05, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "578076429", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 1000, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "578076430", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -1000, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "578076431", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 1000, "status": "POSTED", "subCategory": "BY", "symbol": "T", "transactionId": "578076432", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": -1000, "status": "POSTED", "subCategory": "SL", "symbol": "T", "transactionId": "578076433", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -43.51, "category": "IA", "description": "YOU BOUGHT ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "BOOM", "transactionId": "578076459", "transactionTimestamp": 1580187600, "unitPrice": 42.5135 }, { "accountId": "1747770816", "amount": 116388.14, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": -3000, "status": "POSTED", "subCategory": "SL", "symbol": "T", "transactionId": "578076460", "transactionTimestamp": 1580187600, "unitPrice": 38.7985 }, { "accountId": "1747770816", "amount": 14347.81, "category": "IA", "description": "YOU SOLD REDEEMED TO COVER A SETTLED OBLIGATION ", "securityId": "31617H706", "securityIdType": "CUSIP", "shares": -14347.81, "status": "POSTED", "subCategory": "SL", "symbol": "FZCXX", "transactionId": "578076467", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 2.04, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "407507666", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 851.5, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "203535403", "transactionTimestamp": 1579842000, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -16232.95, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535406", "transactionTimestamp": 1579842000, "unitPrice": 54 }, { "accountId": "1747770816", "amount": -16397.5, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535407", "transactionTimestamp": 1579842000, "unitPrice": 54.5485 }, { "accountId": "1747770816", "amount": -16406.5, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535408", "transactionTimestamp": 1579842000, "unitPrice": 54.5785 }, { "accountId": "1747770816", "amount": -15328.93, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 280, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535409", "transactionTimestamp": 1579842000, "unitPrice": 54.6285 }, { "accountId": "1747770816", "amount": 851.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535410", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535411", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -246.76, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765321 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "203535433", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535434", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 851.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535439", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -216, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "1795934985", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 244.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "1795934986", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "1795934987", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "1795934988", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "1795934989", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "1795935011", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0.7, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1825359856", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1.26, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1825359855", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "87612E106", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "TGT", "transactionId": "1825359854", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "87612E106", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "TGT", "transactionId": "1825359832", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "219350105", "securityIdType": "CUSIP", "shares": 40, "status": "POSTED", "subCategory": "BY", "symbol": "GLW", "transactionId": "1825359831", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "219350105", "securityIdType": "CUSIP", "shares": -40, "status": "POSTED", "subCategory": "SL", "symbol": "GLW", "transactionId": "1825359830", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1963, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -1963, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "173896077", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 1963, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896076", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1963, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896075", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -538.98, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765082 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "173896053", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1963, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896051", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1963, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896046", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -299.99, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 299.99, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "618561120", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 10.98, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "618561119", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 513.79, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -513.79, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "1971685200", "transactionTimestamp": 1578978000, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -1534.72, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1534.72, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1204944576", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -192.5, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 192.5, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "994519513", "transactionTimestamp": 1578632400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 528, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "453836108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "INDB", "transactionId": "994519512", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -513.79, "category": "IA", "description": "YOU BOUGHT ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "GRPN", "transactionId": "994519511", "transactionTimestamp": 1578632400, "unitPrice": 2.54346 }, { "accountId": "1747770816", "amount": 192.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519510", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -192.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519509", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1534.72, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519508", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1534.72, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519486", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -192.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519485", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 192.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519481", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 51.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "944955722", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 20, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -20, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "1497499723", "transactionTimestamp": 1578286800, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 16.24, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464286400", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "EWZ", "transactionId": "1497499722", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 526.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1497499700", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 465.5, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -465.5, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "94204296", "transactionTimestamp": 1578027600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 190, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "302635107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FSK", "transactionId": "94204297", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -10, "category": "IA", "description": "YOU BOUGHT PERIODIC INVESTMENT ", "securityId": "316184100", "securityIdType": "CUSIP", "shares": 0.975, "status": "POSTED", "subCategory": "BY", "symbol": "FMAGX", "transactionId": "94204298", "transactionTimestamp": 1578027600, "unitPrice": 10.26 }, { "accountId": "1747770816", "amount": -10, "category": "IA", "description": "YOU BOUGHT PERIODIC INVESTMENT ", "securityId": "31617R308", "securityIdType": "CUSIP", "shares": 0.85, "status": "POSTED", "subCategory": "BY", "symbol": "FFFAX", "transactionId": "94204299", "transactionTimestamp": 1578027600, "unitPrice": 11.77 }, { "accountId": "1747770816", "amount": 465.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204300", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -465.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204322", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -465.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204323", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 465.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204328", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 18.88, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "55616P104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "M", "transactionId": "1006690467", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1146, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "430697887", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 3.2, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "95766K109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HIO", "transactionId": "430697888", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -0.63, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.63, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "430697889", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 9.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "315910836", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FNMIX", "transactionId": "430697890", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 2.65, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "430697891", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0.63, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "430697892", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1146, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697893", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697915", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697917", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1146, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697922", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 400, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "04010L103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ARCC", "transactionId": "1705309601", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "425673116", "accountNumber": "*****6368", "accountType": "I", "availableCashBalance": 20.4, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 20.4, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 20.4, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 20.4 } ], "nickname": "Individual", "transactions": [ { "accountId": "425673116", "amount": -0.02, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.02, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "670143130", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "425673116", "amount": 0.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "670143129", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1110332638", "accountNumber": "*****7178", "accountType": "I", "availableCashBalance": 2364.6, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 34358.92, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 33.01, "positionType": "LONG", "purchasedPrice": 18.08, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 30487.96, "positionType": "LONG", "purchasedPrice": 109.85, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 94 }, { "averageCost": false, "cashAccount": false, "marketValue": 570.1, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 224.5, "positionType": "LONG", "purchasedPrice": 203.41, "securityId": "084670702", "securityIdType": "CUSIP", "symbol": "BRKB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 9.06, "positionType": "LONG", "purchasedPrice": 9.93, "securityId": "540132503", "securityIdType": "CUSIP", "symbol": "LCSCX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.69, "positionType": "LONG", "purchasedPrice": 162.02, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 3 }, { "averageCost": false, "cashAccount": true, "marketValue": 2364.6, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 2364.6 } ], "nickname": "Individual", "transactions": [ { "accountId": "1110332638", "amount": -2.66, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 2.66, "status": "POSTED", "subCategory": "BY", "symbol": "FDRXX", "transactionId": "584391008", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1110332638", "amount": 2.66, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FDRXX", "transactionId": "584391009", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "425669179", "accountNumber": "*****6325", "accountType": "I", "availableCashBalance": 0.06, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 42.65, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 42.59, "positionType": "LONG", "purchasedPrice": 12.49, "securityId": "316146315", "securityIdType": "CUSIP", "symbol": "FSGGX", "units": 3.215 }, { "averageCost": false, "cashAccount": true, "marketValue": 0.06, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 0.06 } ], "nickname": "Individual" }, { "accountId": "1783782214", "accountNumber": "*****2233", "accountType": "I", "availableCashBalance": 244874.14, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 3258187.12, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 233462.1, "positionType": "LONG", "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 4962 }, { "averageCost": false, "cashAccount": false, "marketValue": 627.2, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 17.53, "positionType": "LONG", "purchasedPrice": 18.33, "securityId": "40624Q203", "securityIdType": "CUSIP", "symbol": "HALL", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 3203.2, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 20 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 244874.14, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 244874.14 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 149.64, "securityId": "413875105", "securityIdType": "CUSIP", "symbol": "0J3A:GB", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 2380168, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 44740 }, { "averageCost": true, "cashAccount": false, "marketValue": 2728.1, "positionType": "LONG", "purchasedPrice": 9.93, "securityId": "540132503", "securityIdType": "CUSIP", "symbol": "LCSCX", "units": 301.115 }, { "averageCost": true, "cashAccount": false, "marketValue": 28362, "positionType": "LONG", "purchasedPrice": 49.13, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 600 }, { "averageCost": false, "cashAccount": false, "marketValue": 311730.16, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 2264 }, { "averageCost": true, "cashAccount": false, "marketValue": 51.76, "positionType": "LONG", "purchasedPrice": 39.75, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.8, "positionType": "LONG", "purchasedPrice": 11.85, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 109, "positionType": "LONG", "purchasedPrice": 64.29, "securityId": "405024100", "securityIdType": "CUSIP", "symbol": "HAE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3281, "positionType": "LONG", "purchasedPrice": 199.86, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.75, "positionType": "LONG", "purchasedPrice": 34.2, "securityId": "093671105", "securityIdType": "CUSIP", "symbol": "HRB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 36309.07, "positionType": "LONG", "purchasedPrice": 54.53, "securityId": "254939200", "securityIdType": "CUSIP", "symbol": "DXQLX", "units": 1063.105 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 27.39, "securityId": "41165F101", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2594.72, "positionType": "LONG", "purchasedPrice": 108.74, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.2, "positionType": "LONG", "purchasedPrice": 0.36, "securityId": "Q7318E103", "securityIdType": "CUSIP", "symbol": "PANRF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1157.28, "positionType": "LONG", "purchasedPrice": 33.09, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 424.04, "positionType": "LONG", "purchasedPrice": 87.08, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 2520.6, "positionType": "LONG", "purchasedPrice": 23.77, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 15 }, { "averageCost": false, "cashAccount": false, "marketValue": 5701, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 841.28, "positionType": "LONG", "purchasedPrice": 22.41, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 11 } ], "nickname": "THE DELTA PILOTS DEFINED", "transactions": [ { "accountId": "1783782214", "amount": -0.04, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.04, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "613061137", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 0.04, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "613061138", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -10737.6, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10737.6, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "2001488484", "transactionTimestamp": 1579755600, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 10737.6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "2001488485", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -1736.7, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1736.7, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1619806359", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 1736.7, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1619806358", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -169.1, "category": "DV", "description": "REINVESTMENT REINVESTED @ $32.65AS OF 01/02/20 ", "securityId": "254939200", "securityIdType": "CUSIP", "shares": 5.179, "status": "POSTED", "subCategory": "RN", "symbol": "DXQLX", "transactionId": "1209213743", "transactionTimestamp": 1578027600, "unitPrice": 32.65 }, { "accountId": "1783782214", "amount": 169.1, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254939200", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DXQLX", "transactionId": "1209213744", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -0.26, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.26, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "108318952", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 0.26, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "093671105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HRB", "transactionId": "108318953", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -1.27, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1.27, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1787079226", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1783782214", "amount": -28.8, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 28.8, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1787079225", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 1.27, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1787079224", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1783782214", "amount": 28.8, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1787079223", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "357183466", "accountNumber": "*****0967", "accountType": "I", "availableCashBalance": 1015.09, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1015.09, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 1015.09, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 1015.09 } ], "nickname": "Individual", "transactions": [ { "accountId": "357183466", "amount": -1.09, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1.09, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "355677844", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "357183466", "amount": 1.09, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "355677843", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "91572249", "accountNumber": "*****5180", "accountType": "I", "availableCashBalance": 244358.45, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 258617.43, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 8.86, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 66.02, "positionType": "LONG", "purchasedPrice": 33.01, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 8964, "positionType": "LONG", "purchasedPrice": 15, "securityId": "G0684D107", "securityIdType": "CUSIP", "symbol": "ATH", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 4, "positionType": "LONG", "purchasedPrice": 1.46, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 5216.1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "792895G73", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": true, "marketValue": 244358.45, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 244358.45 } ], "nickname": "My Brokerage", "transactions": [ { "accountId": "91572249", "amount": -261.27, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 261.27, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "27907035", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "91572249", "amount": 261.27, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "27907036", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1747769018", "accountNumber": "*****3825", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 2961187.46, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 704.96, "positionType": "LONG", "purchasedPrice": 27.74, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 974.64, "positionType": "LONG", "purchasedPrice": 146.59, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 2912, "positionType": "LONG", "purchasedPrice": 46.15, "securityId": "26874R108", "securityIdType": "CUSIP", "symbol": "E", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1560.96, "positionType": "LONG", "purchasedPrice": 87.06, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 101.93, "securityId": "184541AT7", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 407.34, "positionType": "LONG", "purchasedPrice": 159.39, "securityId": "149123101", "securityIdType": "CUSIP", "symbol": "CAT", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1824, "positionType": "LONG", "purchasedPrice": 5.51, "securityId": "85207U105", "securityIdType": "CUSIP", "symbol": "S", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 11906, "positionType": "LONG", "purchasedPrice": 61.03, "securityId": "92343V104", "securityIdType": "CUSIP", "symbol": "VZ", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 61.55, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -420055.77, "positionType": "LONG", "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": -723 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 17.79, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3363.36, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 21 }, { "averageCost": false, "cashAccount": false, "marketValue": 86262.59, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 557 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.4, "securityId": "24702R101", "securityIdType": "CUSIP", "units": 108 }, { "averageCost": true, "cashAccount": false, "marketValue": 116198, "positionType": "LONG", "purchasedPrice": 270.02, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 1233.59, "positionType": "LONG", "purchasedPrice": 377.31, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 7.951 }, { "averageCost": false, "cashAccount": false, "marketValue": 8668.8, "positionType": "LONG", "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 3010 }, { "averageCost": true, "cashAccount": false, "marketValue": 3278.96, "positionType": "LONG", "purchasedPrice": 91.33, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 34 }, { "averageCost": true, "cashAccount": false, "marketValue": 5395.98, "positionType": "LONG", "purchasedPrice": 23.88, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 417 }, { "averageCost": true, "cashAccount": false, "marketValue": 6517.97, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 1667 }, { "averageCost": true, "cashAccount": false, "marketValue": 3096.3, "positionType": "LONG", "purchasedPrice": 20.07, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 123.605 }, { "averageCost": true, "cashAccount": false, "marketValue": 3313.83, "positionType": "LONG", "purchasedPrice": 5.86, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 29 }, { "averageCost": false, "cashAccount": false, "marketValue": -1121380, "positionType": "LONG", "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": -19000 }, { "averageCost": false, "cashAccount": false, "marketValue": 627.2, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 14 }, { "averageCost": false, "cashAccount": false, "marketValue": 47025.3, "positionType": "LONG", "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 490 }, { "averageCost": true, "cashAccount": false, "marketValue": 66.95, "positionType": "LONG", "purchasedPrice": 52.06, "securityId": "617480280", "securityIdType": "CUSIP", "symbol": "DRR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.15, "securityId": "16951C108", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 5.89, "positionType": "LONG", "purchasedPrice": 2.43, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 6 }, { "averageCost": false, "cashAccount": false, "marketValue": -17448, "positionType": "LONG", "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 227.81, "positionType": "LONG", "purchasedPrice": 12.27, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 488131.7, "positionType": "LONG", "purchasedPrice": 286.63, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1505 }, { "averageCost": true, "cashAccount": false, "marketValue": 2940, "positionType": "LONG", "purchasedPrice": 17.16, "securityId": "92334N103", "securityIdType": "CUSIP", "symbol": "VEOEY", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 2498.65, "positionType": "LONG", "purchasedPrice": 175.6, "securityId": "031162100", "securityIdType": "CUSIP", "symbol": "AMGN", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 750516, "positionType": "LONG", "purchasedPrice": 94.04, "securityId": "166764100", "securityIdType": "CUSIP", "symbol": "CVX", "units": 6800 }, { "averageCost": true, "cashAccount": false, "marketValue": 87.44, "positionType": "LONG", "purchasedPrice": 8.28, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 702.06, "positionType": "LONG", "purchasedPrice": 62.64, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": -3567.74, "positionType": "LONG", "purchasedPrice": 176.86, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": -11 }, { "averageCost": false, "cashAccount": false, "marketValue": 269.25, "positionType": "LONG", "securityId": "165167107", "securityIdType": "CUSIP", "symbol": "CHK", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 126368, "positionType": "LONG", "purchasedPrice": 159.17, "securityId": "08862E109", "securityIdType": "CUSIP", "symbol": "BYND", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 77.88, "positionType": "LONG", "purchasedPrice": 4.91, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 2173.93, "positionType": "LONG", "purchasedPrice": 100.42, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 29.874 }, { "averageCost": true, "cashAccount": false, "marketValue": 101430.03, "positionType": "LONG", "purchasedPrice": 86.24, "securityId": "166764100", "securityIdType": "CUSIP", "symbol": "CVX", "units": 919 }, { "averageCost": true, "cashAccount": false, "marketValue": 3281, "positionType": "LONG", "purchasedPrice": 209.51, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 1302.03, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 333 }, { "averageCost": false, "cashAccount": false, "marketValue": 45608, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 800 }, { "averageCost": false, "cashAccount": false, "marketValue": 17.72, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 51571.71, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 333 }, { "averageCost": true, "cashAccount": false, "marketValue": 5039.91, "positionType": "LONG", "purchasedPrice": 1.46, "securityId": "023111206", "securityIdType": "CUSIP", "symbol": "AMRN", "units": 261 }, { "averageCost": true, "cashAccount": false, "marketValue": 4325, "positionType": "LONG", "purchasedPrice": 48.56, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.97, "securityId": "767754104", "securityIdType": "CUSIP", "units": 458 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1727.58, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -19157.2, "positionType": "LONG", "purchasedPrice": 215.88, "securityId": "433323102", "securityIdType": "CUSIP", "symbol": "HIFS", "units": -94 }, { "averageCost": true, "cashAccount": false, "marketValue": 853.9, "positionType": "LONG", "purchasedPrice": 72.99, "securityId": "25746U109", "securityIdType": "CUSIP", "symbol": "D", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 3.2, "positionType": "LONG", "purchasedPrice": 5.1, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 2391.59, "positionType": "LONG", "purchasedPrice": 11.53, "securityId": "85917L528", "securityIdType": "CUSIP", "symbol": "BMAAX", "units": 216.826 }, { "averageCost": true, "cashAccount": false, "marketValue": 2613356.2, "positionType": "LONG", "purchasedPrice": 23.79, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 18980 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 101.42, "securityId": "300011LX9", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 32152.14, "positionType": "LONG", "purchasedPrice": 104.39, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 267 }, { "averageCost": true, "cashAccount": false, "marketValue": 268.4, "positionType": "LONG", "purchasedPrice": 43.59, "securityId": "617446448", "securityIdType": "CUSIP", "symbol": "MS", "units": 5 } ], "marginBalance": 3249664.4, "nickname": "Option Levelkamakshi", "transactions": [ { "accountId": "1747769018", "amount": 4.17, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "2142235927", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -40508.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1938263702", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 40508.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1938263703", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-243825-1 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "VZ", "transactionId": "764304020", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-243825-2 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "VZ", "transactionId": "764304019", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243825-2 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "VZ", "transactionId": "90631568", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243825-1 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "VZ", "transactionId": "90631567", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3980609QQ", "securityIdType": "CUSIP", "shares": 2, "status": "POSTED", "subCategory": "BY", "symbol": "A200117C82.5", "transactionId": "1208969088", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 16494.7, "category": "IA", "description": "YOU SOLD ASSIGNED CALLS AS OF 01-17-20 ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "A", "transactionId": "1208969084", "transactionTimestamp": 1579582800, "unitPrice": 82.5 }, { "accountId": "1747769018", "amount": -1161.27, "category": "IA", "description": "MARGIN INTEREST @ 8.825% AVG BAL 225,580DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1208969083", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -22997.84, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1560832216", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 22997.84, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1560832217", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -38.54, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "433323102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "HIFS", "transactionId": "1116167142", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -56.4, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "433323102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "HIFS", "transactionId": "1116167143", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 12.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BOOM", "transactionId": "1116167144", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 474.6, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355294453", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -474.6, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355294452", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 474.6, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208781", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -474.6, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208782", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -37626.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208783", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 37626.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208784", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 4, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "1354389945", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 198.45, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "498121931", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -10538.61, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2089825955", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 10538.61, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2089825956", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 89.41, "category": "DV", "description": "DIVIDEND RECEIVED SUBSTITUTE PAYMENT ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "988931163", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 149.56, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "988931164", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 3.61, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1627300806", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -11411.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1627300804", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 11411.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1627300803", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "88600589", "accountNumber": "*****8808", "accountType": "I", "availableCashBalance": 168356.65, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 205886.85, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 18412, "positionType": "LONG", "purchasedPrice": 80.02, "securityId": "003260106", "securityIdType": "CUSIP", "symbol": "PPLT", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 19118.2, "positionType": "LONG", "purchasedPrice": 39.52, "securityId": "063679724", "securityIdType": "CUSIP", "symbol": "NRGD", "units": 400 }, { "averageCost": false, "cashAccount": true, "marketValue": 168356.65, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 168356.65 } ], "nickname": "DIA and INV OBJ", "transactions": [ { "accountId": "88600589", "amount": 200, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "867090404", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "88600589", "amount": -100, "category": "X1", "description": "TRANSFERRED TO VS 135-837429-1 CURRENT CONTRIBUTION", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "867090405", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "88600589", "amount": -100, "category": "X1", "description": "TRANSFERRED TO VS 135-837429-1 PRIOR CONTRIBUTION ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "867090406", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "88600589", "amount": -180.22, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 180.22, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "1658460465", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "88600589", "amount": 180.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1658460464", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "869738357", "accountNumber": "*****4600", "accountType": "I", "availableCashBalance": 5524.67, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 6162.23, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 5524.67, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 5524.67 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 39.57, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 99.84, "positionType": "LONG", "purchasedPrice": 88.65, "securityId": "654106103", "securityIdType": "CUSIP", "symbol": "NKE", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 504.12, "positionType": "LONG", "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 3 } ], "nickname": "Individual", "transactions": [ { "accountId": "869738357", "amount": -0.25, "category": "IA", "description": "YOU BOUGHT MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.25, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1418058707", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "869738357", "amount": 0.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "654106103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "NKE", "transactionId": "1418058706", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "869738357", "amount": -5.91, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 5.91, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "242805709", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "869738357", "amount": 5.91, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "242805710", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1704025916", "accountNumber": "*****8990", "accountType": "I", "availableCashBalance": 14.41, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 26.99, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 6.58, "positionType": "LONG", "purchasedPrice": 6, "securityId": "33812L102", "securityIdType": "CUSIP", "symbol": "FIT", "units": 1 }, { "averageCost": false, "cashAccount": true, "marketValue": 20.41, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 20.41 } ], "nickname": "Individual", "transactions": [ { "accountId": "1704025916", "amount": -6, "category": "IA", "description": "YOU BOUGHT ", "securityId": "33812L102", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "FIT", "transactionId": "874978129", "transactionTimestamp": 1580187600, "unitPrice": 5 }, { "accountId": "1704025916", "amount": -0.02, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.02, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "1664321594", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704025916", "amount": 0.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1664321593", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "668169523", "accountNumber": "*****2379", "accountType": "ROTH", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "ROTH IRA", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.67, "securityId": "1008524D1", "securityIdType": "CUSIP", "units": 5000 } ], "nickname": "ROTH IRA" }, { "accountId": "1078746320", "accountNumber": "*****6320", "accountType": "401K", "balanceAsOf": 1580187600, "currency": "USD", "currentValue": 0, "displayName": "Defined Contributions", "nickname": "NATIONWIDE SAVINGS PLAN" } ] } }
{         "transactions": {             "InvestmentTransaction": [               {                 "accountId": "1377569312",                 "amount": -10.82,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 1,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 10.82,                 "subCategory": "BY",                 "symbol": "FCASH",                 "transactionId": "1378762715",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 10.82,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "FZFXX",                 "transactionId": "1378762716",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -0.11,                 "category": "DV",                 "commission": 0,                 "description": "REINVESTMENT CASH (315994103) (Cash)",                 "fees": 0,                 "investmentTransactionType": "REINVESTOFINCOME",                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 1,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0.11,                 "subCategory": "RN",                 "symbol": "FCASH",                 "transactionId": "1378762717",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0.11,                 "category": "DV",                 "commission": 0,                 "description": "INTEREST EARNED CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "IT",                 "symbol": "FCASH",                 "transactionId": "1378762718",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED FROM FZFXX TO FCASH FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -9043.64,                 "subCategory": "SL",                 "symbol": "FZFXX",                 "transactionId": "1103351732",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED TO FCASH IS LIQUID CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 9043.64,                 "subCategory": "BY",                 "symbol": "FCASH",                 "transactionId": "1103351733",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "commission": 0,                 "description": " EXCHANGED TO FCASH CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "OC",                 "symbol": "FCASH",                 "transactionId": "1103351734",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -6.87,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 6.87,                 "subCategory": "BY",                 "symbol": "FZFXX",                 "transactionId": "1441520567",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -7.08,                 "category": "DV",                 "commission": 0,                 "description": "REINVESTMENT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "REINVESTOFINCOME",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 7.08,                 "subCategory": "RN",                 "symbol": "FZFXX",                 "transactionId": "1441520566",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 7.08,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "FZFXX",                 "transactionId": "1441520565",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 6.87,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "1441520564",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 45.4,                 "category": "IA",                 "commission": 0,                 "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "PURCHASETOCLOSE",                 "postedTimestamp": "2019-08-26T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -45.4,                 "subCategory": "SL",                 "symbol": "FZFXX",                 "transactionId": "65853201",                 "transactionTimestamp": "2019-08-26T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -45.4,                 "category": "IA",                 "commission": 19.95,                 "description": "YOU BOUGHT ABN AMRO BK NV MTN SR SB BOND 144A 2.65000% 01/19/2021 ISIN #US00084DAQ34 SEDOL #BF5G7R3 (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-26T04:00:00Z",                 "price": 1,                 "securityId": "00084DAQ3",                 "securityIdType": "CUSIP",                 "securityType": "DEBT",                 "shares": 2000,                 "subCategory": "BY",                 "transactionId": "65853199",                 "transactionTimestamp": "2019-08-26T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED TO FZFXX IS LIQUID FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 9075.09,                 "subCategory": "BY",                 "symbol": "FZFXX",                 "transactionId": "1383711025",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "commission": 0,                 "description": " EXCHANGED TO FZFXX FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "OC",                 "symbol": "FZFXX",                 "transactionId": "1383711024",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED FROM SPAXX TO FZFXX FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -9075.09,                 "subCategory": "SL",                 "symbol": "SPAXX",                 "transactionId": "1383711023",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -15.34,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-07-31T04:00:00Z",                 "price": 1,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 15.34,                 "subCategory": "BY",                 "symbol": "SPAXX",                 "transactionId": "491872566",                 "transactionTimestamp": "2019-07-31T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 15.34,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-07-31T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "491872565",                 "transactionTimestamp": "2019-07-31T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -15.03,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-06-28T04:00:00Z",                 "price": 1,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 15.03,                 "subCategory": "BY",                 "symbol": "SPAXX",                 "transactionId": "1016217473",                 "transactionTimestamp": "2019-06-28T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 15.03,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-06-28T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "1016217472",                 "transactionTimestamp": "2019-06-28T04:00:00Z"               }             ]           }         }

data elements fdx v4 deposittransaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

coming soon

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


hub manual data providers data inventory tab

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

coming soon content

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


data elements fdx v4 holding

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

testing authentication content

“Happy path” tests

Test caseTask(s)Expected result(s)
Successful creation of OAuth linkDirect end-user to the Mikomo login.End-user goes from your app to the provider login screen.
Valid loginGo through Mikomo’s authentication flow and reach the account selection screen.Successfully arrive at the account selection screen displaying all the user’s accounts.
Successful account selectionSelect the desired financial accounts.End-user’s accounts are selected without error.
Successful redirect to expected redirect_uriThe app/browser takes user to the success page.Successfully arrive at your app’s redirect URI.
Successful retrieval of authentication codeStore the authentication code.Authentication code is used for next step, retrieving tokens.
Successful token validationUse the Token endpoint to request refresh and ID tokens.Valid refresh_token and id_token tokens are returned. These tokens are associated with the Mikomo end-user who logged-in and the specified sandbox app, provider (Mikomo), and selected accounts.

“Sad path” tests

Test caseTask(s)Expected result(s)
Login failure (invalid connector)Provide an invalid providerId in the auth URL for connector (e.g. Mikomoo vs Mikomo).HTTP 400: Bad Request
Login failure (no connector)Provide connector without a value.HTTP 403: Forbidden

Possible: HTTP 200: OK. When this occurs, an Akoya login screen may appear and will not be usable for your end-user.
Login failure (invalid redirect_uri)1. Provide an empty redirect_uri.

2. Provide an incorrect redirect_uri.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid client_id)1. Provide an empty client_id.

2. Provide an incorrect client_id.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid response_type)Provide an empty response_type.HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_requests
Login failure (invalid scope)1. Provide an empty scope.

2. scope missing openid.
HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_scope
Login failure (invalid scope)scope missing offline_access.End-user login will be successful.

Initial token endpoint response will be missing refresh_token
Login failure (incorrect username/password)Enter incorrect user credentials.HTTP 401: Unauthorized

Receive an error message in the UI that the end-user’s username and/or password is incorrect.

token flow authentication authorization

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


project plan

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

mikomo mikomo 1

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

oauth implementation styles popup approach recommended

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


statements get statement list

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

token flow ID token

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


versioning

📌

Akoya API versions are set in the path

Incremental changes in a version will be listed in release notes and maintain backward compatibility. The current Akoya version is Akoya API v2.

This guide outlines the Akoya API versioning approach and our goals in defining and supporting our users with any breaking changes created with API updates. We aim to limit breaking changes as much as possible to new API versions (a.k.a. major versions). This is achieved by only releasing non-breaking changes (a.k.a. backward compatible) to current API versions.

API major version timeline

Major releases will be communicated in advance to give our users time to understand upcoming changes. With a new major version release, the previous version will be automatically deprecated. Six months after deprecation, the previous version will be sunset. Once a version is sunset, it will no longer be available or supported.

When an API is marked as deprecated, we strongly recommend that you migrate to the latest version as soon as possible. New implementations of Akoya APIs should implement the latest (non-deprecated) major version.

Release timeline graph depicting v1 deprecating with v2 release, then sunset v1 6 months later

API release timeline

API versionRelease dateDeprecation dateSunset dateMigration guide
v1November 2, 2022May 2, 2023https://docs.akoya.com/v2/docs/migration-guide
v2November 2, 2022

Akoya APIs and breaking changes

We will increment API major version numbers for any non-backward compatible changes to an API. The following examples are principles to define breaking changes vs. non-breaking changes.

Examples of breaking (non-backward compatible) changes:

  • Changes to the URL or fundamental request/response associated with an endpoint
  • Removal, rename, or change to the type of a declared property
  • Removal, rename, or change to a data field
  • Removal or rename of APIs or API parameters
  • Addition of a required request header
  • Changes to an existing query parameter or addition of new mandatory request parameters

Examples of non-breaking (backward compatible) changes:

  • Addition of net-new data fields
  • Addition of properties that are nullable or have a default value
  • Addition of a member to an enumeration
  • Removal, rename, or change to the type of an open extension
  • Removal, rename, or change to the type of an annotation
  • Introduction of paging to existing collections
  • Addition or changes to error codes
  • Changes to the order of properties
  • Changes to the length or format of opaque strings, such as resource IDs

📘

Implementation note

A data recipient implementing Akoya APIs should expect to see non-breaking changes rolled out regularly through minor version updates. Please implement the Akoya APIs in a way that allow for these changes.


investments content

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

data elements fdx v4 pensionsource

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

openapi change log

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

requirements fdx

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


qa overview references

Please reference the error case inventory, pagination document, and the various Mikomo test users available in the sandbox as you complete these tests. Akoya provides a set of generic Mikomo users to test our APIs. Provider-specific Mikomo users and data inventories are also available in the Data Recipient Hub.

🚧

Caution

Samples are based on production data, but responses may be updated or changed by providers.

References

TopicReference
Akoya API docsAkoya API Docs
Recommended project planHigh level project checklist
Integration guideDeveloper project checklist
Sample test planSee "Sample test plan" section.
Akoya error code inventory
Authentication errorsAuthentication errors
Token API errorsToken API errors
Akoya API errorsData Access API errors
PaginationPagination
Mikomo test users
General test usersMikomo
Provider-specificHoused within the Hub; please reference provider-specific pages for data inventories and provider-specific Mikomo test users

Our plan includes four sections which cover:

  1. Authentication: Authentication flow to the point when Akoya returns an ID token.

  2. Token management: The ID token refresh/revocation process.

  3. Akoya product responses: Responses from Akoya API endpoints.

  4. Akoya API Error Cases: Errors triggered by Akoya data APIs.


oauth implementation styles full redirect no popup approach

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


akoya api error cases content

📘

Notes:

Errors return as standardized FDX error codes. See Errors.

Data calls can be validated against the provider-specific Mikomo users and sample responses for payload structure and actual data elements.

Test caseTask(s)Expected result(s)
Try an invalid API call.Use /accounts-info endpoint with incorrect parameter detail instead of details.HTTP 400: Bad Request

Error payload:
{
   "code": 401,
   "message": "Invalid input"
}
Ensure that a recipient can’t access provider data without a subscription.Use /accounts-info endpoint with an incorrect id_token, even a valid token with another provider.HTTP 401: Unauthorized

Error payload:
{
   "code": 602,
   "message": "Customer not authorized"
}
Try the token of another user from the same provider.Have two valid end-user tokens.

Use the id_token for user 1 in an /accounts-info call with the query parameter accountIds set for an account for user 2.
HTTP 404: Not Found

Error payload:
{
   "code": 701,
   "message": "Account not found"
}
Try to get transactions without specifying the account.Use /transactions endpoint without the accountId path variable.HTTP 404: Not Found

Error payload:
{
   "code": 701,
   "message": "Account not found"
}
Try to get accounts or transactions with incorrect provider.Use /transactions endpoint without the providerId path variable.HTTP 400: Bad Request

Error payload:
{
   "code": 401,
   "message": "Invalid Input"
}
Try start and/or end dates that are not in the ISO8601 format.Use /transactions endpoint with startTime and endTime parameters with a string that is not ISO 8601 date format in UTC time zone.HTTP 400: Bad Request

Error payload:
{
   "code": 702,
   "message": "Invalid start or end date"
}
Try invalid dates.Use a date that is prior to available transaction history.HTTP 200: OK

Error payload:
{
   "transactions": []
}

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. In these cases, we’ve made Mikomo users that when used, will supply certain error codes and messages. One such user is mikomo_601. When data is requested for this user, the result will always be a 601 error. See: Mikomo Error testing.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Test caseTask(s)Expected result(s)
Try using a revoked ID token.1. Use error test case mikomo_601 to mimic this type of error.

2. Use error test case mikomo_602 to mimic this type of error.
1. HTTP 404: Not Found

Error payload:
{
   "code": 601,
   "message": "Customer not found"
}

2. HTTP 401: Unauthorized

Error payload:
{
   "code": 602,
   "message": "Customer not authorized"
}
Internal service errorUse error test case mikomo_500 to mimic this type of error.HTTP 500: Internal Server Error

Error payload:
{
   "code": 500,
   "message": "Internal server error"
}
Subsystem unavailableUse error test case mikomo_501 to mimic this type of error.HTTP 500: Internal Server Error

Error payload:
{
   "code": 501,
   "message": "Subsystem unavailable"
}

akoya v2 release

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


deprecation history content

The following versions, elements, or documentation have been deprecated and are no longer supported. Please be sure to update to the latest version or implementation.

DeprecatedDateDescription
Data Elements FDX v4 documentation2022‑Aug‑18This document has been removed. To find detailed information about supported data elements, see Products and use cases.
FDX-based versioningSandbox: 2022‑Feb‑10Akoya now follows its own versioning that allows for new products while maintaining backward compatibility. The current version is Akoya API v1. For more information, see Versioning.
akoyaId2021‑Nov‑16The Data Access API required a user-generated unique Id to be passed with each call for tracking and support. This is no longer required and has been replaced with an Akoya generated unique Id passed in the response header, x-akoya-interaction-id.
Data Access API v1.02021‑Oct‑1The Data Access API v1.0 was modeled after FDX’s Durable Data API (DDA) v1.0.

postman collection tips tricks

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

redirecturi

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

coming soon subscriptions

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


oauth implementation styles desktop app

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


statements content

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

how to work with akoya where to go from here

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


hub manual team management content

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

redirecturi overview

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

payments supported data elements

Full account number and bank routing number. Includes bankId, identifier, type, and identifierType.

Results for payments are returned in JSON in FDX format.

Endpoint: /payments

API documentation: https://docs.akoya.com/v2/reference/payment-networks

Example response

{ "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }

Supported data elements

NameTypeDescription
bankIdstringBank identifier used by the payment network ie. Routing Number
identifierstringThe number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.
identifierTypestringType of identifier
typestringType of payment network
transferInbooleanCan transfer funds to the account using this information
transferOutbooleanCan transfer funds from the account using this information

postman collection

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

pagination

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


mikomo users content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Users

Model response schemas are included for your reference as well as several test
users with details listed below.

Data updated: January 2021

Transaction dates: from 2019-06-28T04:00:00Z to 2020-11-30T05:00:00Z

useraccount typestransactions
accountType (Number of transactions): accountId
mikomo_1
8 accounts
Investment: I, TODIIndividual (20): 1755209824
mikomo_2
8 accounts
Investment: HSA, I, TODIHSA (20): 474362798
mikomo_3
38 accounts
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312
mikomo_5
3 accounts
Investment: J, HSA, ROTHHSA (8): 1221963501
mikomo_6
10 accounts
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone
mikomo_7
5 accounts
Investment: 401(k) PLAN
Insurance: J
Loan: COMMERCIALLOAN
LoC: CREDITCARD
Deposit: CHECKING
401 (1): 1222577818
Insurance (1): 1254778531
COMMERCIALLOAN (1): 1316072226
CREDITCARD (1): 1417522980
CHECKING (1): 1602364511
mikomo_9
1 account
Deposit: CHECKING
includes payment-networks and customers data
CHECKING (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
mikomo_10
6 accounts
Deposit: Checking, Savings, CD
Investment: College Savings, Brokerage
includes payment-networks and customers data
CHECKING (1360): g833202fb0866d0ad83472c429
College Savings (22): 839502593
Brokerage (4): 5426873
Savings (4): 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d

postman collection transactions

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

example 529 investments response

🚧

These are example responses

The following response is a starting reference for use in planning implementation for this account type. Data providers may change data elements.

Investments response

{ "investmentAccount": { "accountId": "00000000", "accountNumber": "*****6019", "accountType": "College Savings", "availableCashBalance": 0, "balanceAsOf": "2022-03-03T05:00:00Z", "balanceType": "ASSET", "currency": { "currencyCode": "USD" }, "currentValue": 51737.02, "displayName": "Individual", "holdings": [ { "cashAccount": false, "marketValue": 51737.02, "positionType": "LONG", "purchasedPrice": 18.22, "securityIdType": "ISIN", "units": 2028.903 } ], "marginBalance": 0, "nickname": "Kid's 529", } }

Transactions response

[ { "transactions": [ { "investmentTransaction": { "accountId": "00000000", "amount": -31.18, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 1.219, "subCategory": "BY", "transactionId": "9999703221", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 31.18, "category": "DD", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "9999703222", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": -1500, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 58.05, "subCategory": "BY", "transactionId": "131377067", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 1500, "category": "X2", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "131377066", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, ... ] } ]

pagination 1%EF%B8%8F%E2%83%A3 first request

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


timestamps

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

token flow Akoya ID JWT Claims

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


timestamps responses

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

intro to fdx fdx members

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


testing product responses

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

investments example response

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

transactions loan transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

hub manual data providers account types tab

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

getting started content

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


investments

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

data elements fdx v4 fiattribute

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

token flow

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


hub manual team management adding users

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

hub manual my apps requesting production access

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


products

Products

Akoya products include Account info, Balances, Investments, Payments, Transactions, Customers, and Statements. These products allow you to retrieve the data you need for your use case.

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

ProductDescriptionEndpoint
Account infoBasic account information (included with all other products)./accounts-info/v2/{providerId}
BalancesBalances and rates of bank accounts, credit cards, loans, investments, and more./balances/v2/{providerId}
InvestmentsDetailed information on underlying holdings and positions of investment accounts./accounts/v2/{providerId}/
TransactionsUp to two years of transaction data across account types, including amounts, dates, and descriptions./transactions/v2/{providerId}/{accountId}
CustomersVerified contact information on file, including name, email, address, and phone number./customers/v2/{providerId}/current
PaymentsIdentifiers necessary to make ACH and RTP payments./payments/v2/{providerId}/{accountId}/payment-networks
StatementsList of financial institution statements available to download via PDF​/statements/{version}/{providerId}/{accountId}
/statements/{version}/{providerId}/{accountId}/{statementId}

Use cases

Payment Enablement​Account Opening​Lending & ​Credit Enhancement​Personal Financial ​ManagementWealth Management & ​InvestingBusiness Financial ​Management
Balances

☑️

☑️

☑️

☑️

☑️

☑️

Transactions

☑️

☑️

☑️

☑️

Investments

☑️

Payments

☑️

☑️

Customers

☑️

☑️

☑️

Statements

☑️

☑️

* All use cases include the account info product

  • Account opening: Enable instant account opening and funding without micro-deposits.
  • Business financial management: Offer businesses the ability to aggregate their financial accounts in one place.
  • Lending & credit enhancement: Access bank or brokerage data to better inform lending decisions.
  • Payment enablement: Authorize account-to-account or person-to-person payments with instant account authentication. Payment enablement uses the payments product to request an end-user's payment account identifiers. This is not a payment initiation request.
  • Personal finance management (PFM): Provide users the ability to aggregate their financial accounts in one place.
  • Wealth management & investing: Give users and/or financial advisors the ability to collate investments, assets, and other held-away account information for one sweeping financial picture.

intro to fdx best practices

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


hub manual data providers

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

hub manual my apps viewing your subscribed providers

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


project plan prepare for go live

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

balances insurance accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

project plan obtain data

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

example 529

🚧

These are example responses

The following response is a starting reference for use in planning implementation for this account type. Data providers may change data elements.

Investments response

{ "investmentAccount": { "accountId": "00000000", "accountNumber": "*****6019", "accountType": "College Savings", "availableCashBalance": 0, "balanceAsOf": "2022-03-03T05:00:00Z", "balanceType": "ASSET", "currency": { "currencyCode": "USD" }, "currentValue": 51737.02, "displayName": "Individual", "holdings": [ { "cashAccount": false, "marketValue": 51737.02, "positionType": "LONG", "purchasedPrice": 18.22, "securityIdType": "ISIN", "units": 2028.903 } ], "marginBalance": 0, "nickname": "Kid's 529", } }

Transactions response

[ { "transactions": [ { "investmentTransaction": { "accountId": "00000000", "amount": -31.18, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 1.219, "subCategory": "BY", "transactionId": "9999703221", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 31.18, "category": "DD", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "9999703222", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": -1500, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 58.05, "subCategory": "BY", "transactionId": "131377067", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 1500, "category": "X2", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "131377066", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, ... ] } ]

balances content

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

mikomo 6 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
{         "accounts": [           {             "accountId": "1927368180",             "accountNumber": "*****7492",             "accountType": "HSA",             "description": "Health Savings Account",             "displayName": "Health Savings Account",             "nickname": "Company HSA"           },           {             "accountId": "1048765182",             "accountNumber": "*****5729",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "John 529"           },           {             "accountId": "1051344706",             "accountNumber": "*****0073",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "INDIVIDUAL"           },           {             "accountId": "1506439401",             "accountNumber": "*****8258",             "accountType": "IRA",             "description": "Traditional IRA",             "displayName": "Traditional IRA",             "nickname": "IRA"           },           {             "accountId": "1563794797",             "accountNumber": "*****8141",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "Kaytan 529"           },           {             "accountId": "1931314440",             "accountNumber": "*****3189",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1764334283",             "accountNumber": "*****8656",             "accountType": "NONP",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "FIDELITY NQDC PLAN"           },           {             "accountId": "1700080179",             "accountNumber": "*****0467",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "AKOYA"           },           {             "accountId": "722148112",             "accountNumber": "*****0312",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "FIDELITY RET SAVINGS"           },           {             "accountId": "255519456",             "accountNumber": "*****5525",             "accountType": "NRMA",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "Fidelity Retiree Health Reimbursement Plan"           }         ]       }
{         "accounts": {           "investmentAccount": [             { "accountNumber": "*****7492", "accountId": "1927368180", "accountType": "HSA", "displayName": "Health Savings Account", "nickname": "Health Savings Account", "balanceAsOf": 1605560504, "currentValue": 3744.28, "availableCashBalance": 525.02, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 5220, "marketValue": 220, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99318" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 507.5, "marketValue": 507.5, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC94939" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 7515.82, "marketValue": 7515.82, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC96900" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 281.3, "marketValue": 281.3, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC98906" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 0.4, "marketValue": 0.4, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99359" } ] }, { "securityId": "316389105", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 751.183, "Symbol": "FOCPX", "marketValue": 3744.28, "PurchasedPrice": 9.12 } ] }, { "accountNumber": "*****5729", "accountId": "1048765182", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "John 529", "balanceAsOf": 1605560504, "currentValue": 191.73, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "MA0000905", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 8.229, "marketValue": 191.73 } ] }, { "accountNumber": "*****0073", "accountId": "1051344706", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "INDIVIDUAL", "balanceAsOf": 1605560504, "currentValue": 0, "availableCashBalance": 409.41, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "316048107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 132.55, "Symbol": "FTEXX", "marketValue": 132.55 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 276.86, "Symbol": "SPAXX", "marketValue": 276.86 } ] }, { "accountNumber": "*****8258", "accountId": "1506439401", "accountType": "IRA", "displayName": "Traditional IRA", "nickname": "Traditional IRA", "balanceAsOf": 1605560504, "currentValue": 10000, "availableCashBalance": 0.4, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "302993LM0", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 10000, "marketValue": 10000, "PurchasedPrice": 100.21 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 0.4, "Symbol": "SPAXX", "marketValue": 0.4 } ] }, { "accountNumber": "*****8141", "accountId": "1563794797", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "Kaytan 529", "balanceAsOf": 1605560504, "currentValue": 4216.09, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "MA0000905", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 182.725, "marketValue": 4216.09 } ] }, { "accountNumber": "*****3189", "accountId": "1931314440", "accountType": "IRRL", "displayName": "Rollover IRA", "nickname": "Rollover IRA", "balanceAsOf": 1605560504, "currentValue": 8113.45, "availableCashBalance": 1016.52, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "63872T745", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 27.859, "Symbol": "AMFAX", "marketValue": 275.24, "PurchasedPrice": 9.94 }, { "securityId": "31635R801", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 41.523, "Symbol": "FSAMX", "marketValue": 541.99, "PurchasedPrice": 11.72 }, { "securityId": "31635R843", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 38.051, "Symbol": "FSCFX", "marketValue": 546.91, "PurchasedPrice": 14.34 }, { "securityId": "316067107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 201.52, "Symbol": "FDRXX", "marketValue": 201.52 }, { "securityId": "31635R876", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 74.472, "Symbol": "FPIOX", "marketValue": 566.31, "PurchasedPrice": 9.24 }, { "securityId": "31635R884", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 1653.639, "Symbol": "FPCIX", "marketValue": 15802.72, "PurchasedPrice": 11.35 }, { "securityId": "00203H842", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 5.684, "Symbol": "AQMNX", "marketValue": 58.32, "PurchasedPrice": 8.09 }, { "securityId": "31635R702", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 39.904, "Symbol": "FVSAX", "marketValue": 632.7, "PurchasedPrice": 7.54 }, { "securityId": "31635R504", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 102.193, "Symbol": "FCSAX", "marketValue": 21107.14, "PurchasedPrice": 20.89 }, { "securityId": "277923280", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 4.64, "Symbol": "EGRAX", "marketValue": 40.95, "PurchasedPrice": 10.49 }, { "securityId": "31635R868", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 117.655, "Symbol": "FILFX", "marketValue": 136.61, "PurchasedPrice": 10.97 }, { "securityId": "192476109", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 2.144, "Symbol": "CSRSX", "marketValue": 135.54, "PurchasedPrice": 57.61 }, { "securityId": "31635R603", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 27.379, "Symbol": "FSGFX", "marketValue": 675.02, "PurchasedPrice": 23.99 } ] }, { "accountNumber": "*****8656", "accountId": "1764334283", "accountType": "NONP", "displayName": "Defined Contributions", "nickname": "FIDELITY NQDC PLAN", "balanceAsOf": 1605243600, "currentValue": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "Contributions": [] }, { "accountNumber": "*****0467", "accountId": "1700080179", "accountType": "401K", "displayName": "Defined Contributions", "nickname": "AKOYA", "balanceAsOf": 1605243600, "currentValue": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "Contributions": [] }, { "accountNumber": "*****0312", "accountId": "722148112", "accountType": "401K", "displayName": "Defined Contributions", "nickname": "FIDELITY RET SAVINGS", "balanceAsOf": 1605243600, "currentValue": 45059.49, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "holdings": [ { "securityIdType": "CUSIP", "units": 14.884, "currentUnitPrice": 14.06, "Symbol": "FTRNX", "marketValue": 1307.82 }, { "securityIdType": "CUSIP", "units": 41.481, "currentUnitPrice": 18.95, "Symbol": "FZAHX", "marketValue": 634.85 }, { "securityIdType": "CUSIP", "units": 68.052, "currentUnitPrice": 13.05, "Symbol": "FKIDX", "marketValue": 587.58 }, { "securityIdType": "CUSIP", "units": 75.455, "currentUnitPrice": 24.56, "Symbol": "FXAIX", "marketValue": 981.88 }, { "securityIdType": "CUSIP", "units": 87.424, "currentUnitPrice": 15.32, "Symbol": "FZALX", "marketValue": 148.54 }, { "securityIdType": "CUSIP", "units": 14.158, "currentUnitPrice": 4.67, "Symbol": "FGBMX", "marketValue": 267.22 }, { "securityIdType": "CUSIP", "units": 146.339, "currentUnitPrice": 1.53, "Symbol": "FDVKX", "marketValue": 1137.49 }, { "securityIdType": "CUSIP", "units": 155.314, "currentUnitPrice": 16.15, "Symbol": "FOSKX", "marketValue": 925.88 }, { "securityIdType": "CUSIP", "units": 14.22, "currentUnitPrice": 4.58, "Symbol": "FSRNX", "marketValue": 201.72 }, { "securityIdType": "CUSIP", "units": 147.748, "currentUnitPrice": 11.6, "Symbol": "FIKMX", "marketValue": 2593.87 }, { "securityIdType": "CUSIP", "units": 210.261, "currentUnitPrice": 4.86, "Symbol": "FKEMX", "marketValue": 8303.8 }, { "securityIdType": "CUSIP", "units": 301.036, "currentUnitPrice": 15, "Symbol": "FAPCX", "marketValue": 415.55 }, { "securityIdType": "CUSIP", "units": 337.695, "currentUnitPrice": 5.28, "Symbol": "FETKX", "marketValue": 15767.63 }, { "securityIdType": "CUSIP", "units": 3929.674, "currentUnitPrice": 22.19, "Symbol": "FBCGX", "marketValue": 8709.46 }, { "securityIdType": "CUSIP", "units": 443.073, "currentUnitPrice": 29.17, "Symbol": "FDGKX", "marketValue": 125529.34 }, { "securityIdType": "CUSIP", "units": 46.753, "currentUnitPrice": 0.67, "Symbol": "FGKFX", "marketValue": 842.12 }, { "securityIdType": "CUSIP", "units": 507.984, "currentUnitPrice": 4.14, "Symbol": "FGIKX", "marketValue": 2655.47 }, { "securityIdType": "CUSIP", "units": 513.331, "currentUnitPrice": 11.54, "Symbol": "FIKUX", "marketValue": 5069.44 }, { "securityIdType": "CUSIP", "units": 505.426, "currentUnitPrice": 17.7, "Symbol": "FZAJX", "marketValue": 1016.04 }, { "securityIdType": "CUSIP", "units": 64.337, "currentUnitPrice": 10.93, "Symbol": "FIPDX", "marketValue": 70119.63 }, { "securityIdType": "CUSIP", "units": 72.382, "currentUnitPrice": 8.58, "Symbol": "FGUMX", "marketValue": 629.87 }, { "securityIdType": "CUSIP", "units": 7119.914, "currentUnitPrice": 8.45, "Symbol": "FTKFX", "marketValue": 5206.09 }, { "securityIdType": "CUSIP", "units": 710.903, "currentUnitPrice": 12.78, "Symbol": "FIKOX", "marketValue": 12423.34 }, { "securityIdType": "CUSIP", "units": 947.27, "currentUnitPrice": 11.35, "Symbol": "FTHRX", "marketValue": 1915.02 }, { "securityIdType": "CUSIP", "units": 1191.672, "currentUnitPrice": 11.78, "Symbol": "FGMNX", "marketValue": 11151.9 }, { "securityIdType": "CUSIP", "units": 1989.732, "currentUnitPrice": 8.55, "Symbol": "FIKQX", "marketValue": 16747.22 }, { "securityIdType": "CUSIP", "units": 2165.877, "currentUnitPrice": 10.06, "Symbol": "FCNVX", "marketValue": 25870.72 } ], "contributions": [] }, { "accountNumber": "*****5525", "accountId": "255519456", "accountType": "NRMA", "displayName": "Defined Contributions", "nickname": "Fidelity Retiree Health Reimbursement Plan", "balanceAsOf": 1605243600, "currentValue": 0, "MarginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "holdings": [ { "securityIdType": "CUSTOM", "units": 0, "currentUnitPrice": 1, "marketValue": 0, "fiAttributes": [ { "name": "SecurityIdType", "value": "FundCode" }, { "name": "SecurityId", "value": "UNQU" }                   ]                 }               ]             }           ]         }       }

mikomo content

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

getting started 7 success

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

data access network akoya api v2

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

mikomo mikomo 10

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo users

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Users

Model response schemas are included for your reference as well as several test
users with details listed below.

Data updated: January 2021

Transaction dates: from 2019-06-28T04:00:00Z to 2020-11-30T05:00:00Z

useraccount typestransactions
accountType (Number of transactions): accountId
mikomo_1
8 accounts
Investment: I, TODIIndividual (20): 1755209824
mikomo_2
8 accounts
Investment: HSA, I, TODIHSA (20): 474362798
mikomo_3
38 accounts
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312
mikomo_5
3 accounts
Investment: J, HSA, ROTHHSA (8): 1221963501
mikomo_6
10 accounts
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone
mikomo_7
5 accounts
Investment: 401(k) PLAN
Insurance: J
Loan: COMMERCIALLOAN
LoC: CREDITCARD
Deposit: CHECKING
401 (1): 1222577818
Insurance (1): 1254778531
COMMERCIALLOAN (1): 1316072226
CREDITCARD (1): 1417522980
CHECKING (1): 1602364511
mikomo_9
1 account
Deposit: CHECKING
includes payment-networks and customers data
CHECKING (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
mikomo_10
6 accounts
Deposit: Checking, Savings, CD
Investment: College Savings, Brokerage
includes payment-networks and customers data
CHECKING (1360): g833202fb0866d0ad83472c429
College Savings (22): 839502593
Brokerage (4): 5426873
Savings (4): 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d

versioning

📌

Akoya API versions are set in the path

Incremental changes in a version will be listed in release notes and maintain backward compatibility. The current Akoya version is Akoya API v2.

This guide outlines the Akoya API versioning approach and our goals in defining and supporting our users with any breaking changes created with API updates. We aim to limit breaking changes as much as possible to new API versions (a.k.a. major versions). This is achieved by only releasing non-breaking changes (a.k.a. backward compatible) to current API versions.

API major version timeline

Major releases will be communicated in advance to give our users time to understand upcoming changes. With a new major version release, the previous version will be automatically deprecated. Six months after deprecation, the previous version will be sunset. Once a version is sunset, it will no longer be available or supported.

When an API is marked as deprecated, we strongly recommend that you migrate to the latest version as soon as possible. New implementations of Akoya APIs should implement the latest (non-deprecated) major version.

Release timeline graph depicting v1 deprecating with v2 release, then sunset v1 6 months later

API release timeline

API versionRelease dateDeprecation dateSunset dateMigration guide
v1November 2, 2022May 2, 2023https://docs.akoya.com/v2/docs/migration-guide
v2November 2, 2022

Akoya APIs and breaking changes

We will increment API major version numbers for any non-backward compatible changes to an API. The following examples are principles to define breaking changes vs. non-breaking changes.

Examples of breaking (non-backward compatible) changes:

  • Changes to the URL or fundamental request/response associated with an endpoint
  • Removal, rename, or change to the type of a declared property
  • Removal, rename, or change to a data field
  • Removal or rename of APIs or API parameters
  • Addition of a required request header
  • Changes to an existing query parameter or addition of new mandatory request parameters

Examples of non-breaking (backward compatible) changes:

  • Addition of net-new data fields
  • Addition of properties that are nullable or have a default value
  • Addition of a member to an enumeration
  • Removal, rename, or change to the type of an open extension
  • Removal, rename, or change to the type of an annotation
  • Introduction of paging to existing collections
  • Addition or changes to error codes
  • Changes to the order of properties
  • Changes to the length or format of opaque strings, such as resource IDs

📘

Implementation note

A data recipient implementing Akoya APIs should expect to see non-breaking changes rolled out regularly through minor version updates. Please implement the Akoya APIs in a way that allow for these changes.


pagination previous page request

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


glossary content

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

qa overview content

Please reference the error case inventory, pagination document, and the various Mikomo test users available in the sandbox as you complete these tests. Akoya provides a set of generic Mikomo users to test our APIs. Provider-specific Mikomo users and data inventories are also available in the Data Recipient Hub.

🚧

Caution

Samples are based on production data, but responses may be updated or changed by providers.

References

TopicReference
Akoya API docsAkoya API Docs
Recommended project planHigh level project checklist
Integration guideDeveloper project checklist
Sample test planSee "Sample test plan" section.
Akoya error code inventory
Authentication errorsAuthentication errors
Token API errorsToken API errors
Akoya API errorsData Access API errors
PaginationPagination
Mikomo test users
General test usersMikomo
Provider-specificHoused within the Hub; please reference provider-specific pages for data inventories and provider-specific Mikomo test users

Our plan includes four sections which cover:

  1. Authentication: Authentication flow to the point when Akoya returns an ID token.

  2. Token management: The ID token refresh/revocation process.

  3. Akoya product responses: Responses from Akoya API endpoints.

  4. Akoya API Error Cases: Errors triggered by Akoya data APIs.


intro to fdx footnote two

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


investments investmentloan

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

coming soon request list

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


cors content

Modern browsers have a security functionality (called the same-origin policy) which restricts web applications in one domain from accessing resources in another. Without the same-origin policy, it would be much easier for malicious websites to access resources from remote servers. Cross-origin resource sharing (CORS) allows a back end web resource to allow incoming requests from specific external sources.

When testing through a locally-stored version of our OpenAPI spec, through JavaScript in a browser, or some other testing scenarios, Akoya endpoints may return a CORS error: No Access-Control-Allow-Origin header is present on the requested resource. This is an expected error.

For more information and links to possible solutions, see Mozilla’s CORS guide, "Cross-Origin Resource Sharing (CORS)."

Change log

DateUpdate
2022-Oct-24Original

versioning api major version timeline

📌

Akoya API versions are set in the path

Incremental changes in a version will be listed in release notes and maintain backward compatibility. The current Akoya version is Akoya API v2.

This guide outlines the Akoya API versioning approach and our goals in defining and supporting our users with any breaking changes created with API updates. We aim to limit breaking changes as much as possible to new API versions (a.k.a. major versions). This is achieved by only releasing non-breaking changes (a.k.a. backward compatible) to current API versions.

API major version timeline

Major releases will be communicated in advance to give our users time to understand upcoming changes. With a new major version release, the previous version will be automatically deprecated. Six months after deprecation, the previous version will be sunset. Once a version is sunset, it will no longer be available or supported.

When an API is marked as deprecated, we strongly recommend that you migrate to the latest version as soon as possible. New implementations of Akoya APIs should implement the latest (non-deprecated) major version.

Release timeline graph depicting v1 deprecating with v2 release, then sunset v1 6 months later

API release timeline

API versionRelease dateDeprecation dateSunset dateMigration guide
v1November 2, 2022May 2, 2023https://docs.akoya.com/v2/docs/migration-guide
v2November 2, 2022

Akoya APIs and breaking changes

We will increment API major version numbers for any non-backward compatible changes to an API. The following examples are principles to define breaking changes vs. non-breaking changes.

Examples of breaking (non-backward compatible) changes:

  • Changes to the URL or fundamental request/response associated with an endpoint
  • Removal, rename, or change to the type of a declared property
  • Removal, rename, or change to a data field
  • Removal or rename of APIs or API parameters
  • Addition of a required request header
  • Changes to an existing query parameter or addition of new mandatory request parameters

Examples of non-breaking (backward compatible) changes:

  • Addition of net-new data fields
  • Addition of properties that are nullable or have a default value
  • Addition of a member to an enumeration
  • Removal, rename, or change to the type of an open extension
  • Removal, rename, or change to the type of an annotation
  • Introduction of paging to existing collections
  • Addition or changes to error codes
  • Changes to the order of properties
  • Changes to the length or format of opaque strings, such as resource IDs

📘

Implementation note

A data recipient implementing Akoya APIs should expect to see non-breaking changes rolled out regularly through minor version updates. Please implement the Akoya APIs in a way that allow for these changes.


getting started 2 join the akoya data recipient hub

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

example 529 content

🚧

These are example responses

The following response is a starting reference for use in planning implementation for this account type. Data providers may change data elements.

Investments response

{ "investmentAccount": { "accountId": "00000000", "accountNumber": "*****6019", "accountType": "College Savings", "availableCashBalance": 0, "balanceAsOf": "2022-03-03T05:00:00Z", "balanceType": "ASSET", "currency": { "currencyCode": "USD" }, "currentValue": 51737.02, "displayName": "Individual", "holdings": [ { "cashAccount": false, "marketValue": 51737.02, "positionType": "LONG", "purchasedPrice": 18.22, "securityIdType": "ISIN", "units": 2028.903 } ], "marginBalance": 0, "nickname": "Kid's 529", } }

Transactions response

[ { "transactions": [ { "investmentTransaction": { "accountId": "00000000", "amount": -31.18, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 1.219, "subCategory": "BY", "transactionId": "9999703221", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 31.18, "category": "DD", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "9999703222", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": -1500, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 58.05, "subCategory": "BY", "transactionId": "131377067", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 1500, "category": "X2", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "131377066", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, ... ] } ]

consent flow improvements versioning

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

data recipient hub user manual content

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

data elements fdx v4 loantransaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

investments vesting

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

mikomo 2 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (HSA)
{ "accounts": [         {           "accountId": "474362798",           "accountNumber": "*****2211",           "accountType": "HSA",           "description": "Health Savings Account",           "displayName": "Health Savings Account",           "nickname": "Mikomo HSA"         },         {           "accountId": "8457618647",           "accountNumber": "*****0652",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         },         {           "accountId": "6782844173",           "accountNumber": "*****8327",           "accountType": "I",           "description": "Cash Management-Individual",           "displayName": "Cash Management-Individual",           "nickname": "Cash Management-Individual"         },         {           "accountId": "1604944465",           "accountNumber": "*****6531",           "accountType": "TODI",           "description": "Individual - TOD",           "displayName": "Individual - TOD",           "nickname": "INDIVIDUAL - TOD"         },         {           "accountId": "0083580481",           "accountNumber": "*****4562",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         },         {           "accountId": "4373600037",           "accountNumber": "*****6950",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "INDIVIDUAL"         },         {           "accountId": "5430168474",           "accountNumber": "*****1975",           "accountType": "I",           "description": "Cash Management-Individual",           "displayName": "Cash Management-Individual",           "nickname": "Cash Management-Individual"         },         {           "accountId": "1901964658",           "accountNumber": "*****1060",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         }       ]     }
{       "accounts": {         "investmentAccount": [           { "accountId": "474362798", "accountNumber": "*****2211", "accountType": "HSA", "availableCashBalance": 5937.45, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Health Savings Account", "nickname": "Mikomo HSA", "holdings": [ { "securityId": "788400567", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 5937.45, "symbol": "MIKOMO", "marketValue": 5937.45 } ], "transactions": [ { "securityIdType": "CUSIP", "securityId": "788400567", "transactionTimestamp": 1606712400, "transactionId": "491564048", "category": "IA", "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": -0.02, "unitPrice": 1, "shares": 0.02, "status": "POSTED", "subCategory": "BY", "symbol": "MIKOMO", "accountId": "474362798" }, { "transactionTimestamp": 1606712400, "transactionId": "491564047", "category": "DV", "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": 0.02, "unitPrice": 0, "shares": 0, "status": "POSTED", "subCategory": "IT", "accountId": "474362798" }, { "securityIdType": "CUSIP", "securityId": "788400567", "transactionTimestamp": 1607460317, "transactionId": "1408513721", "category": "IA", "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": -10.05, "unitPrice": 1, "shares": 10.05, "status": "POSTED", "subCategory": "BY", "symbol": "MIKOMO", "accountId": "474362798" }, { "securityIdType": "CUSIP", "securityId": "2074929871", "transactionTimestamp": 1606107600, "transactionId": "667937335", "category": "IA", "description": "YOU SOLD BERKSHIRE HATHAWAY INC COM USD0.0033 CL (BRKB) (Cash)", "amount": 10.05, "unitPrice": 0, "shares": -10.05, "status": "POSTED", "subCategory": "SL", "symbol": "MIKOMO", "accountId": "474362798" } ] }, { "accountId": "8457618647", "accountNumber": "*****9277", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "6782844173", "accountNumber": "*****2431", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1604944465", "accountNumber": "*****5212", "accountType": "TODI", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 11067.73, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 2013.16, "positionType": "LONG", "purchasedPrice": 2, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.09, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 65.983 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 9054.57, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 9054.57 } ], "nickname": "INDIVIDUAL - TOD", "transactions": [ { "accountId": "1604944465", "amount": -10.82, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10.82, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1604944465", "amount": 10.82, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1604944465", "amount": -0.11, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.11, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1604944465", "amount": 0.11, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM FZFXX TO FCASH ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": -9043.64, "status": "POSTED", "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FCASH IS LIQUID ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 9043.64, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "description": " EXCHANGED TO FCASH ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "0083580481", "accountNumber": "*****2071", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "4373600037", "accountNumber": "*****9727", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 125.32, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 125.32, "positionType": "LONG", "securityId": "316341304", "securityIdType": "CUSIP", "symbol": "FZFXX", "units": 125.32 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "4373600037", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "167178143", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "4373600037", "amount": 0.03, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "167178142", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "167178141", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FZFXX IS LIQUID ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 125.14, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "442589127", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "description": " EXCHANGED TO FZFXX ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FZFXX", "transactionId": "442589126", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM SPAXX TO FZFXX ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -125.14, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "442589125", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "5430168474", "accountNumber": "*****9275", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1901964658", "accountNumber": "*****9276", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }         ]       }     }
{       "transactions": {           "InvestmentTransaction": [             {               "accountId": "474362798",               "transactionId": "491564048",               "transactionTimestamp": "2020-11-30T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -0.02             },             {               "accountId": "474362798",               "transactionId": "491564047",               "transactionTimestamp": "2020-11-30T05:00:00Z",               "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "DV",               "subCategory": "IT",               "amount": 0.02             },             {               "accountId": "474362798",               "transactionId": "1408513721",               "transactionTimestamp": "2020-11-25T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -10.05             },             {               "accountId": "474362798",               "transactionId": "667937335",               "transactionTimestamp": "2020-11-23T05:00:00Z",               "description": "YOU SOLD BERKSHIRE HATHAWAY INC COM USD0.0033 CL (BRKB) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 10.05             },             {               "accountId": "474362798",               "transactionId": "133135276",               "transactionTimestamp": "2020-11-18T05:00:00Z",               "description": "REDEMPTION FROM CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 200.56             },             {               "accountId": "474362798",               "transactionId": "992158578",               "transactionTimestamp": "2020-11-16T05:00:00Z",               "description": "YOU BOUGHT MODERNA INC COM (MRNA) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -200.56             },             {               "accountId": "474362798",               "transactionId": "1092486826",               "transactionTimestamp": "2020-11-12T05:00:00Z",               "description": "REINVESTMENT APPLE INC COM USD0.00001 (AAPL) (Cash)",               "category": "DV",               "subCategory": "RN",               "amount": -1.33             },             {               "accountId": "474362798",               "transactionId": "1092486825",               "transactionTimestamp": "2020-11-12T05:00:00Z",               "description": "DIVIDEND RECEIVED APPLE INC COM USD0.00001 (AAPL) (Cash)",               "category": "DV",               "subCategory": "VP",               "amount": 1.33             },             {               "accountId": "474362798",               "transactionId": "400172591",               "transactionTimestamp": "2020-11-10T05:00:00Z",               "description": "REDEMPTION FROM CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 84.59             },             {               "accountId": "474362798",               "transactionId": "400172588",               "transactionTimestamp": "2020-11-10T05:00:00Z",               "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",               "category": "IA",               "subCategory": "OC",               "amount": 115.38             },             {               "accountId": "474362798",               "transactionId": "2042877271",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -501.13             },             {               "accountId": "474362798",               "transactionId": "2042877270",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "DIVIDEND RECEIVED ISHARES IBOXX $ INVESTMENT GRADE CORPOR (LQD) (Cash)",               "category": "DV",               "subCategory": "VP",               "amount": 1.13             },             {               "accountId": "474362798",               "transactionId": "2042877269",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU BOUGHT TWITTER INC COM USD0.000005 (TWTR) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -172             },             {               "accountId": "474362798",               "transactionId": "2042877268",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU BOUGHT TWITTER INC COM USD0.000005 (TWTR) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -27.97             },             {               "accountId": "474362798",               "transactionId": "2042877266",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU SOLD FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 500             },             {               "accountId": "474362798",               "transactionId": "877407259",               "transactionTimestamp": "2020-10-30T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -0.01             },             {               "accountId": "474362798",               "transactionId": "877407260",               "transactionTimestamp": "2020-10-30T04:00:00Z",               "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "DV",               "subCategory": "IT",               "amount": 0.01             },             {               "accountId": "474362798",               "transactionId": "644847797",               "transactionTimestamp": "2020-10-23T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -115.39             },             {               "accountId": "474362798",               "transactionId": "644847796",               "transactionTimestamp": "2020-10-23T04:00:00Z",               "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",               "category": "IA",               "subCategory": "OC",               "amount": 115.39             },             {               "accountId": "474362798",               "transactionId": "911885110",               "transactionTimestamp": "2020-10-15T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -1.7             }           ]         }       }

oauth implementation styles windows

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


mikomo mikomo 6

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

glossary akoya

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

hub manual glossary

TermDefinition
Akoya-hosted accountA user account with access to the Hub that "lives" on Akoya's IDP (when identity federation has NOT been configured)
Federated accountA user account with access to the Hub after identity federation has been configured between your company's IDP and the Hub. This would likely be the "domain account" or "network account" you use to log into your work computer and access your company's electronic resources.
Identity federationA technology that allows users to access services provided by an outside organization using their own company's login credentials. This technology enables authentication methods such as single sign-on (SSO)
ProviderA "provider" of data to the Akoya network, typically a bank or other financial institution.
RecipientA "receiver" of data from Akoya's network, typically a fintech company. In some cases, a bank or other financial institution may serve as a recipient as well.

mikomo 5 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (HSA)
{     "accounts": [           {             "accountId": "1437285993",             "accountNumber": "*****7494",             "accountType": "J",             "description": "Joint WROS",             "displayName": "Joint WROS",             "nickname": "Our account"           },           {             "accountId": "1221963501",             "accountNumber": "*****1003",             "accountType": "HSA",             "description": "Health Savings Account",             "displayName": "Health Savings Account",             "nickname": "HSA from work"           },           {             "accountId": "171161155",             "accountNumber": "*****2431",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           }         ]       }
{         "accounts": {           "investmentAccount": [             { "accountNumber": "*****7494", "accountId": "1437285993", "accountType": "J", "displayName": "Joint WROS", "nickname": "Joint WROS", "balanceAsOf": 1605243600, "currentValue": 9457.69, "availableCashBalance": 9457.69, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 9457.69, "marketValue": 9457.69, "fiAttributes": [ { "name": "securityIdType", "value": "CUSIP" }, { "name": "securityId", "value": "FDIC99177" } ] } ] }, { "accountNumber": "*****1003", "accountId": "1221963501", "accountType": "HSA", "displayName": "Health Savings Account", "nickname": "Health Savings Account", "balanceAsOf": 1605243600, "currentValue": 6165.21, "availableCashBalance": 6165.21, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "316067107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 6165.21, "symbol": "FDRXX", "marketValue": 6165.21 } ] }, { "accountNumber": "*****9876", "accountId": "171161155", "accountType": "ROTH", "displayName": "ROTH IRA", "nickname": "ROTH IRA", "balanceAsOf": 1605243600, "currentValue": 76666.51, "availableCashBalance": 617.35, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "037833100", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 284, "symbol": "AAPL", "marketValue": 33869.84, "purchasedPrice": 20.37 }, { "securityId": "140543828", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 126.846, "symbol": "WGIFX", "marketValue": 7078, "purchasedPrice": 38.53 }, { "securityId": "239080401", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 249.159, "symbol": "DNVYX", "marketValue": 7940.69, "purchasedPrice": 30.96 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 617.35, "symbol": "SPAXX", "marketValue": 617.35 }, { "securityId": "353496847", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 4057.53, "symbol": "FRIAX", "marketValue": 8926.56, "purchasedPrice": 2.02 }, { "securityId": "399874825", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 184.704, "symbol": "GFFFX", "marketValue": 11811.82, "purchasedPrice": 30.69 }, { "securityId": "453320822", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 279.959, "symbol": "AMEFX", "marketValue": 6422.25, "purchasedPrice": 18.94 }                 ]             }           ]         }       }
{           "transactions": {             "InvestmentTransaction": [                 {                     "accountId": "1221963501",                     "transactionId": "3370514755",                     "transactionTimestamp": "2020-11-10T05:00:00Z",                     "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "SL",                     "amount": 234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "3370514754",                     "transactionTimestamp": "2020-11-10T05:00:00Z",                     "description": "NORMAL DISTR PARTIAL CORNER PHARMACY (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": -234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "7078093",                     "transactionTimestamp": "2020-10-30T04:00:00Z",                     "description": "REINVESTMENT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "DV",                     "subCategory": "RN",                     "amount": -0.05                 },                 {                     "accountId": "1221963501",                     "transactionId": "7078094",                     "transactionTimestamp": "2020-10-30T04:00:00Z",                     "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "DV",                     "subCategory": "VP",                     "amount": 0.05                 },                 {                     "accountId": "1221963501",                     "transactionId": "1515190063",                     "transactionTimestamp": "2020-10-23T04:00:00Z",                     "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "BY",                     "amount": -234.62                 },                 {                     "accountId": "1221963501",                     "transactionId": "15151090062",                     "transactionTimestamp": "2020-10-23T04:00:00Z",                     "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": 234.62                 },                 {                     "accountId": "1221963501",                     "transactionId": "626781505",                     "transactionTimestamp": "2020-10-08T04:00:00Z",                     "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "BY",                     "amount": -234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "626781504",                     "transactionTimestamp": "2020-10-08T04:00:00Z",                     "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": 234.61                 }             ]           }         }

testing tokens content

🚧

Token required!

Please obtain a token prior to completing this section.

"Happy path" tests

Test caseTask(s)Expected result(s)
Refresh an ID tokenCall the /token endpoint with the refresh_token.Receive valid new ID and refresh tokens.
Refresh an expired ID token1. Identify an id_token older than 24 hours.

2. Call the /token endpoint with the refresh_token.
Receive valid new ID and refresh tokens.
Revoke an ID token1. Call the /token/revoke endpoint.

2. Attempt a call to the /accounts endpoint.
1. HTTP 200: OK (empty payload)

2. HTTP 401: Unauthorized

Error payload:
{
"code": 602,
"message": "Customer not authorized"
}

“Sad path” tests

Please review our error codes documentation.

Test caseTask(s)Expected result(s)
Refresh a used refresh_token.Test a token refresh call with a refresh_token that has already been claimed.HTTP 400: Bad Request

Error payload:
{
"error": "invalid_request",
   "error_description": "Refresh token is invalid or has 
 already been claimed by another client."
}
Refresh with invalid client_secret.Try a token refresh with an invalid client_secret.HTTP 401: Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Revoke with invalid client_secret.1. Try the revoke token endpoint without a client_secret.

2. Try the revoke token endpoint with an incorrect client_secret.
1. HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request"
}


2. HTTP 401: Unauthorized

Error payload:
{
   "error": "unauthorized_client"
}
Obtain a token with invalid authorization code.1. Use the /token endpoint with an expired code.

2. Use the /token endpoint with an incorrect code.
(both tasks) HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "Invalid or expired code parameter."
}
Obtain a token with an incorrect redirect_URI.Use /token endpoint with an incorrect redirect_URI.HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "redirect_uri did not match URI 
from initial request."
}
Obtain a token with a missing grant_type field.1. Use /token endpoint with a missing grant_type field.

2. Use /token endpoint with an incorrect grant_type field.
HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_grant"
}
Obtain a token with an incorrect client_id.1. Use /token endpoint with an incorrect clientId.

2. Use /token endpoint with an incorrect client_secret.
1. HTTP 401: invalid_client

2. HTTP 401 Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Refresh a token without a refresh_token.Use /token endpoint with grant_type=refresh_token without including the current refresh_token.HTTP 400 Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "No refresh token in request."
}

testing authentication

“Happy path” tests

Test caseTask(s)Expected result(s)
Successful creation of OAuth linkDirect end-user to the Mikomo login.End-user goes from your app to the provider login screen.
Valid loginGo through Mikomo’s authentication flow and reach the account selection screen.Successfully arrive at the account selection screen displaying all the user’s accounts.
Successful account selectionSelect the desired financial accounts.End-user’s accounts are selected without error.
Successful redirect to expected redirect_uriThe app/browser takes user to the success page.Successfully arrive at your app’s redirect URI.
Successful retrieval of authentication codeStore the authentication code.Authentication code is used for next step, retrieving tokens.
Successful token validationUse the Token endpoint to request refresh and ID tokens.Valid refresh_token and id_token tokens are returned. These tokens are associated with the Mikomo end-user who logged-in and the specified sandbox app, provider (Mikomo), and selected accounts.

“Sad path” tests

Test caseTask(s)Expected result(s)
Login failure (invalid connector)Provide an invalid providerId in the auth URL for connector (e.g. Mikomoo vs Mikomo).HTTP 400: Bad Request
Login failure (no connector)Provide connector without a value.HTTP 403: Forbidden

Possible: HTTP 200: OK. When this occurs, an Akoya login screen may appear and will not be usable for your end-user.
Login failure (invalid redirect_uri)1. Provide an empty redirect_uri.

2. Provide an incorrect redirect_uri.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid client_id)1. Provide an empty client_id.

2. Provide an incorrect client_id.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid response_type)Provide an empty response_type.HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_requests
Login failure (invalid scope)1. Provide an empty scope.

2. scope missing openid.
HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_scope
Login failure (invalid scope)scope missing offline_access.End-user login will be successful.

Initial token endpoint response will be missing refresh_token
Login failure (incorrect username/password)Enter incorrect user credentials.HTTP 401: Unauthorized

Receive an error message in the UI that the end-user’s username and/or password is incorrect.

getting started authorization

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

coming soon update and delete applications

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


pagination 3%EF%B8%8F%E2%83%A3 ongoing requests

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


migration guide akoya api v2

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

balances supported data elements

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

transactions example response

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

customers

Full customer information for permissioned end-user.

Results for customers are returned in JSON in FDX format.

Endpoint: /customers

API documentation: https://docs.akoya.com/v2/reference/customer-info

Example response

{ "customer": { "customerId": "1521963501", "name": { "last": "Last", "first": "First", "middle": "H" }, "telephones": [ { "number": "9585550103" } ], "addresses": [ { "state": "TN", "city": "SPRINGFIELD", "line1": "7572 Road Rd", "postalCode": "37172-6488" } ], "email": [ "user@example.com" ] } }

Supported data elements

NameTypeDescription
customerIdstringLong-term persistent identity of the customer. This identity must be unique to the owning institution
nameobjectnone
name.firststringFirst or given name. This data element may contain first & last name if not separated.
name.middlestringnone
name.laststringnone
name.prefixstringName prefix, e.g. Mr.
name.suffixstringGenerational or academic suffix
name.companystringCompany name
addressesarray[addresses]An array of the customer's addresses
addresses.typestringThe location type of an address
addresses.line1stringMay contain full address if not separated
addresses.line2stringnone
addresses.line3stringnone
addresses.citystringnone
addresses.statestringnone
addresses.postalCodestringnone
addresses.countrystringISO 3166 Country Code
telephonesarray[telephones]An array of the customer's telephone numbers.
telephones.numberstringnone
telephones.typestringnone
telephones.countrystringCountry calling codes defined by ITU-T recommendations E.123 and E.164
emailarray[string]An array of the customer's electronic mail addresses

troubleshooting content

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


implementation steps

The following steps will guide you through creation of a test app in the Akoya Sandbox.

Authenticate & select accounts

TaskDescription
Review technical requirements.See: Requirements.
Register with Akoya for Sandbox access.To register, you must provide Akoya with a redirect URI for your use with your Sandbox test app. Akoya will provide you with a client Id and secret for your app.
Securely store client_id and secretEvery App has a unique client Id and secret. They must be treated as secure information and stored securely.
UX - Provider popup or redirectIntegrate into your existing provider selection UI or build popup/ redirect flow for the end-user to select the data provider(s) they'd like to connect with your app. Upon end-user selection, initiate consent and authentication via Akoya to the provider. See: OAuth implementation styles.
Use Sandbox data for implementation and testingThe Akoya Sandbox includes a mock data provider (Mikomo Financial) with several test users that may be used for end-to-end implementation and testing. Use these test accounts for the remaining implementation steps. See: Introduction to Sandbox.
Authorization GrantAfter authentication and authorization, Akoya will return the end-user to your redirect URI with an authorization grant code in the URL with the parameter “code=”. Use this authorization code to request a set of tokens for this end-user. See: Authorization Code.
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
Id and refresh token generationExchange authorization code for ID and Refresh Token See: Token API reference and the token explainer.
Store TokenUse your current secure token storage or implement a way to store each end-user's unique tokens.
Token RevocationImplement a way for the end-user to remove access to their data provider account(s). See Revoke Token.
Error CasesCode for Authorization or Token errors. Develop UX for errors, timeouts, and reauthentication. See Authentication errors and Token API errors.
Validate authenticationValidate UX for account selection, consent, ID/Refresh Token for new and existing users.

Obtain data

TaskDescription
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
AccountsUsing the id_token retrieved in the Id and refresh token step above for a test user, make a call for data. See: API Docs - Accounts reference.
TransactionsUsing the id_token retrieved in the Id and refresh token step above for a test user, and the account Id retrieved in the Accounts step above, make a call for transaction data. See: Akoya API v2 - Transactions reference.
Error CasesCode for Akoya API v2 errors. Develop UX for errors, timeouts, and reauthentication. See Errors.
Validate DataValidate use and display of data in your own systems and UI.

hub manual team management method 2 security key

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

hub manual my apps modifying support emails

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


testing product responses the accounts info endpoint

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

hub manual team management

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

redirecturi resources

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

customers content

Full customer information for permissioned end-user.

Results for customers are returned in JSON in FDX format.

Endpoint: /customers

API documentation: https://docs.akoya.com/v2/reference/customer-info

Example response

{ "customer": { "customerId": "1521963501", "name": { "last": "Last", "first": "First", "middle": "H" }, "telephones": [ { "number": "9585550103" } ], "addresses": [ { "state": "TN", "city": "SPRINGFIELD", "line1": "7572 Road Rd", "postalCode": "37172-6488" } ], "email": [ "user@example.com" ] } }

Supported data elements

NameTypeDescription
customerIdstringLong-term persistent identity of the customer. This identity must be unique to the owning institution
nameobjectnone
name.firststringFirst or given name. This data element may contain first & last name if not separated.
name.middlestringnone
name.laststringnone
name.prefixstringName prefix, e.g. Mr.
name.suffixstringGenerational or academic suffix
name.companystringCompany name
addressesarray[addresses]An array of the customer's addresses
addresses.typestringThe location type of an address
addresses.line1stringMay contain full address if not separated
addresses.line2stringnone
addresses.line3stringnone
addresses.citystringnone
addresses.statestringnone
addresses.postalCodestringnone
addresses.countrystringISO 3166 Country Code
telephonesarray[telephones]An array of the customer's telephone numbers.
telephones.numberstringnone
telephones.typestringnone
telephones.countrystringCountry calling codes defined by ITU-T recommendations E.123 and E.164
emailarray[string]An array of the customer's electronic mail addresses

investments all account categories

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

redirecturi why registration is important

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

mikomo mikomo 7

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo 5 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (HSA)
{     "accounts": [           {             "accountId": "1437285993",             "accountNumber": "*****7494",             "accountType": "J",             "description": "Joint WROS",             "displayName": "Joint WROS",             "nickname": "Our account"           },           {             "accountId": "1221963501",             "accountNumber": "*****1003",             "accountType": "HSA",             "description": "Health Savings Account",             "displayName": "Health Savings Account",             "nickname": "HSA from work"           },           {             "accountId": "171161155",             "accountNumber": "*****2431",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           }         ]       }
{         "accounts": {           "investmentAccount": [             { "accountNumber": "*****7494", "accountId": "1437285993", "accountType": "J", "displayName": "Joint WROS", "nickname": "Joint WROS", "balanceAsOf": 1605243600, "currentValue": 9457.69, "availableCashBalance": 9457.69, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 9457.69, "marketValue": 9457.69, "fiAttributes": [ { "name": "securityIdType", "value": "CUSIP" }, { "name": "securityId", "value": "FDIC99177" } ] } ] }, { "accountNumber": "*****1003", "accountId": "1221963501", "accountType": "HSA", "displayName": "Health Savings Account", "nickname": "Health Savings Account", "balanceAsOf": 1605243600, "currentValue": 6165.21, "availableCashBalance": 6165.21, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "316067107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 6165.21, "symbol": "FDRXX", "marketValue": 6165.21 } ] }, { "accountNumber": "*****9876", "accountId": "171161155", "accountType": "ROTH", "displayName": "ROTH IRA", "nickname": "ROTH IRA", "balanceAsOf": 1605243600, "currentValue": 76666.51, "availableCashBalance": 617.35, "marginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "037833100", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 284, "symbol": "AAPL", "marketValue": 33869.84, "purchasedPrice": 20.37 }, { "securityId": "140543828", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 126.846, "symbol": "WGIFX", "marketValue": 7078, "purchasedPrice": 38.53 }, { "securityId": "239080401", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 249.159, "symbol": "DNVYX", "marketValue": 7940.69, "purchasedPrice": 30.96 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 617.35, "symbol": "SPAXX", "marketValue": 617.35 }, { "securityId": "353496847", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 4057.53, "symbol": "FRIAX", "marketValue": 8926.56, "purchasedPrice": 2.02 }, { "securityId": "399874825", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 184.704, "symbol": "GFFFX", "marketValue": 11811.82, "purchasedPrice": 30.69 }, { "securityId": "453320822", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 279.959, "symbol": "AMEFX", "marketValue": 6422.25, "purchasedPrice": 18.94 }                 ]             }           ]         }       }
{           "transactions": {             "InvestmentTransaction": [                 {                     "accountId": "1221963501",                     "transactionId": "3370514755",                     "transactionTimestamp": "2020-11-10T05:00:00Z",                     "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "SL",                     "amount": 234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "3370514754",                     "transactionTimestamp": "2020-11-10T05:00:00Z",                     "description": "NORMAL DISTR PARTIAL CORNER PHARMACY (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": -234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "7078093",                     "transactionTimestamp": "2020-10-30T04:00:00Z",                     "description": "REINVESTMENT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "DV",                     "subCategory": "RN",                     "amount": -0.05                 },                 {                     "accountId": "1221963501",                     "transactionId": "7078094",                     "transactionTimestamp": "2020-10-30T04:00:00Z",                     "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "DV",                     "subCategory": "VP",                     "amount": 0.05                 },                 {                     "accountId": "1221963501",                     "transactionId": "1515190063",                     "transactionTimestamp": "2020-10-23T04:00:00Z",                     "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "BY",                     "amount": -234.62                 },                 {                     "accountId": "1221963501",                     "transactionId": "15151090062",                     "transactionTimestamp": "2020-10-23T04:00:00Z",                     "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": 234.62                 },                 {                     "accountId": "1221963501",                     "transactionId": "626781505",                     "transactionTimestamp": "2020-10-08T04:00:00Z",                     "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",                     "category": "IA",                     "subCategory": "BY",                     "amount": -234.61                 },                 {                     "accountId": "1221963501",                     "transactionId": "626781504",                     "transactionTimestamp": "2020-10-08T04:00:00Z",                     "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",                     "category": "IA",                     "subCategory": "OC",                     "amount": 234.61                 }             ]           }         }

migration guide transactions transactionsv2provideridaccountid updated

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

token flow refresh token details

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


token flow example id token

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo model response properties 1

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

testing product responses

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

token flow id token lifetime

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo model response fiattribute

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

timestamps change log

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

mikomo 1 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (Individual)
{ "accounts": [ { "accountId": "1755209824", "accountNumber": "*****2061", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739195", "accountNumber": "*****9277", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1755093543", "accountNumber": "*****2431", "accountType": "I", "description": "Cash Management-Individual", "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1781013604", "accountNumber": "*****5212", "accountType": "TODI", "description": "Individual - TOD", "displayName": "Individual - TOD", "nickname": "INDIVIDUAL - TOD" }, { "accountId": "1755208863", "accountNumber": "*****2071", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1777169449", "accountNumber": "*****9727", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739133", "accountNumber": "*****9275", "accountType": "I", "description": "Cash Management-Individual", "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1704739164", "accountNumber": "*****9276", "accountType": "I", "description": "Individual", "displayName": "Individual", "nickname": "Individual" } ] }
{ "accounts": { "investmentAccount": [ { "accountId": "1755209824", "accountNumber": "*****2061", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "INDIVIDUAL" }, { "accountId": "1704739195", "accountNumber": "*****9277", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1755093543", "accountNumber": "*****2431", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1781013604", "accountNumber": "*****5212", "accountType": "TODI", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 11067.73, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 2013.16, "positionType": "LONG", "purchasedPrice": 2, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.09, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 65.983 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 9054.57, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 9054.57 } ], "nickname": "INDIVIDUAL - TOD", "transactions": [ { "accountId": "1781013604", "amount": -10.82, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10.82, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1781013604", "amount": 10.82, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1781013604", "amount": -0.11, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.11, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1781013604", "amount": 0.11, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM FZFXX TO FCASH ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": -9043.64, "status": "POSTED", "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FCASH IS LIQUID ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 9043.64, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1781013604", "amount": 0, "description": " EXCHANGED TO FCASH ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "1755208863", "accountNumber": "*****2071", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1777169449", "accountNumber": "*****9727", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 125.32, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 125.32, "positionType": "LONG", "securityId": "316341304", "securityIdType": "CUSIP", "symbol": "FZFXX", "units": 125.32 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "1777169449", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "167178143", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1777169449", "amount": 0.03, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "167178142", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "167178141", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FZFXX IS LIQUID ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 125.14, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "442589127", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "description": " EXCHANGED TO FZFXX ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FZFXX", "transactionId": "442589126", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1777169449", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM SPAXX TO FZFXX ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -125.14, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "442589125", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "1704739133", "accountNumber": "*****9275", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1704739164", "accountNumber": "*****9276", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1570806408, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" } ] } }
{ "transactions": { "InvestmentTransaction": [ { "accountId": "1755209824", "amount": -10.82, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-30T04:00:00Z", "price": 1, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 10.82, "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 10.82, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-09-30T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": -0.11, "category": "DV", "commission": 0, "description": "REINVESTMENT CASH (315994103) (Cash)", "fees": 0, "investmentTransactionType": "REINVESTOFINCOME", "postedTimestamp": "2019-09-30T04:00:00Z", "price": 1, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0.11, "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 0.11, "category": "DV", "commission": 0, "description": "INTEREST EARNED CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-30T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": "2019-09-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED FROM FZFXX TO FCASH FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -9043.64, "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED TO FCASH IS LIQUID CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 9043.64, "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "commission": 0, "description": " EXCHANGED TO FCASH CASH (315994103) (Cash)", "fees": 0, "postedTimestamp": "2019-09-24T04:00:00Z", "price": 0, "securityId": "315994103", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": "2019-09-24T04:00:00Z" }, { "accountId": "1755209824", "amount": -6.87, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-30T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 6.87, "subCategory": "BY", "symbol": "FZFXX", "transactionId": "1441520567", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": -7.08, "category": "DV", "commission": 0, "description": "REINVESTMENT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "REINVESTOFINCOME", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 7.08, "subCategory": "RN", "symbol": "FZFXX", "transactionId": "1441520566", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 7.08, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1441520565", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 6.87, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-08-30T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1441520564", "transactionTimestamp": "2019-08-30T04:00:00Z" }, { "accountId": "1755209824", "amount": 45.4, "category": "IA", "commission": 0, "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "investmentTransactionType": "PURCHASETOCLOSE", "postedTimestamp": "2019-08-26T04:00:00Z", "price": 1, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -45.4, "subCategory": "SL", "symbol": "FZFXX", "transactionId": "65853201", "transactionTimestamp": "2019-08-26T04:00:00Z" }, { "accountId": "1755209824", "amount": -45.4, "category": "IA", "commission": 19.95, "description": "YOU BOUGHT ABN AMRO BK NV MTN SR SB BOND 144A 2.65000% 01/19/2021 ISIN #US00084DAQ34 SEDOL #BF5G7R3 (Cash)", "fees": 0, "postedTimestamp": "2019-08-26T04:00:00Z", "price": 1, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "securityType": "DEBT", "shares": 2000, "subCategory": "BY", "transactionId": "65853199", "transactionTimestamp": "2019-08-26T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED TO FZFXX IS LIQUID FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 9075.09, "subCategory": "BY", "symbol": "FZFXX", "transactionId": "1383711025", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "commission": 0, "description": " EXCHANGED TO FZFXX FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "316341304", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "OC", "symbol": "FZFXX", "transactionId": "1383711024", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": 0, "category": "ZZ", "commission": 0, "description": "TRANSFERRED FROM SPAXX TO FZFXX FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-08-15T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": -9075.09, "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1383711023", "transactionTimestamp": "2019-08-15T04:00:00Z" }, { "accountId": "1755209824", "amount": -15.34, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-07-31T04:00:00Z", "price": 1, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 15.34, "subCategory": "BY", "symbol": "SPAXX", "transactionId": "491872566", "transactionTimestamp": "2019-07-31T04:00:00Z" }, { "accountId": "1755209824", "amount": 15.34, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-07-31T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "491872565", "transactionTimestamp": "2019-07-31T04:00:00Z" }, { "accountId": "1755209824", "amount": -15.03, "category": "IA", "commission": 0, "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "postedTimestamp": "2019-06-28T04:00:00Z", "price": 1, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 15.03, "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1016217473", "transactionTimestamp": "2019-06-28T04:00:00Z" }, { "accountId": "1755209824", "amount": 15.03, "category": "DV", "commission": 0, "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)", "fees": 0, "investmentTransactionType": "DIV", "postedTimestamp": "2019-06-28T04:00:00Z", "price": 0, "securityId": "31617H102", "securityIdType": "CUSIP", "securityType": "MUTUALFUND", "shares": 0, "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1016217472", "transactionTimestamp": "2019-06-28T04:00:00Z" } ] } }

balances example response

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

consent flow improvements optional claims

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

redirecturi requirements

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

migration guide overview

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

hub manual team management troubleshooting mfa

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

openapi tips for code generation

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

mikomo mikomo 11

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo account details

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo users users

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Users

Model response schemas are included for your reference as well as several test
users with details listed below.

Data updated: January 2021

Transaction dates: from 2019-06-28T04:00:00Z to 2020-11-30T05:00:00Z

useraccount typestransactions
accountType (Number of transactions): accountId
mikomo_1
8 accounts
Investment: I, TODIIndividual (20): 1755209824
mikomo_2
8 accounts
Investment: HSA, I, TODIHSA (20): 474362798
mikomo_3
38 accounts
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312
mikomo_5
3 accounts
Investment: J, HSA, ROTHHSA (8): 1221963501
mikomo_6
10 accounts
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone
mikomo_7
5 accounts
Investment: 401(k) PLAN
Insurance: J
Loan: COMMERCIALLOAN
LoC: CREDITCARD
Deposit: CHECKING
401 (1): 1222577818
Insurance (1): 1254778531
COMMERCIALLOAN (1): 1316072226
CREDITCARD (1): 1417522980
CHECKING (1): 1602364511
mikomo_9
1 account
Deposit: CHECKING
includes payment-networks and customers data
CHECKING (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
mikomo_10
6 accounts
Deposit: Checking, Savings, CD
Investment: College Savings, Brokerage
includes payment-networks and customers data
CHECKING (1360): g833202fb0866d0ad83472c429
College Savings (22): 839502593
Brokerage (4): 5426873
Savings (4): 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d

account info

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

glossary

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

hub manual my apps modifying logo and icon urls

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


account info line of credit accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

hub manual features content

The Hub is Akoya's developer portal, allowing you to:

  • Register apps in our sandbox and production environments.
  • Request production access.
  • View and edit your application details such as:
    • client IDs (view only)
    • redirect URIs (view/edit)
    • client secrets (reset only)
    • email address(es) (view/edit)
  • Review and create subscriptions.
  • Manage team members.
  • See enabled Akoya products for each of your apps.
  • View supported Akoya products for each provider.
  • See release notes for the current release of the Hub.

The Hub also provides quick access to our documentation:


hub manual data providers sample users tab

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

data elements fdx v4 fiportion

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

hub manual authentication content

After your account is set up, you (and any team members you add) can log into the Hub here.

Authentication options

Akoya offers two user authentication options for the Hub :

  • password-based authentication + MFA (and a biometric option) via our own identity provider (IDP). This is the "default" option.
  • single sign-on (SSO) via identity federation between the Hub and your company's IDP such as Active Directory.

Akoya-hosted accounts (the first option) are managed entirely within Team management in the Hub. Currently, only the admin role is available for these accounts.

Federated accounts (the second option) are completely managed by your company, as all user accounts and groups "live" in your IDP. Both the admin and viewer roles are available to these accounts.

Please reach out to your customer service manager (CSM) if you're interested in setting up identity federation to access the Hub. Akoya will work with you to set up the integration and to map our two user roles (admin and viewer) to the appropriate security groups on your end. Once integration is complete, you'll manage access to the Hub simply by adding/removing users from the appropriate security groups.


postman collection working with akoyas postman collection

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

balances investment accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

statements get statement

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

migration guide balances balancesv2providerid new

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

mikomo 7 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

{ "accounts": [ { "investmentAccount": { "accountId": "1222577818", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "401(k) PLAN", "allowedCheckWriting": true, "allowedOptionTrade": true, "availableCashBalance": 985, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceList": [ { "balanceDate": "2020-11-30T05:00:00Z", "balanceDescription": "string", "balanceName": "string", "balanceType": "string", "balanceValue": 760, "currency": { "currencyCode": "string", "currencyRate": 621, "originalCurrencyCode": "string" } } ], "balanceType": "string", "brokerId": "string", "calendaryearFor401K": "2020-11-30T05:00:00Z", "contribution": [ { "employeeAfterTaxAmount": 66, "employeeAfterTaxPercentage": 984, "employeeDeferPreTaxAmount": 968, "employeeDeferPreTaxPercentage": 302, "employeePreTaxAmount": 900, "employeePreTaxPercentage": 285, "employeeYearToDate": 1000, "employerMatchAmount": 590, "employerMatchPercentage": 104, "employerYearToDate": 1000, "rolloverContributionAmount": 282, "rolloverContributionPercentage": 773, "securityId": "string", "securityIdType": "string" } ], "currency": { "currencyCode": "string", "currencyRate": 672, "originalCurrencyCode": "string" }, "currentValue": 797, "dailyChange": 51, "description": "string", "employerName": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "holdings": [ { "assetClasses": [ { "assetClass": "string", "percent": 897 } ], "averageCost": true, "cashAccount": true, "changeInPrice": 714, "currency": { "currencyCode": "string", "currencyRate": 846, "originalCurrencyCode": "string" }, "currentUnitPrice": 52, "currentUnitPriceDate": "2020-11-30T05:00:00Z", "description": "string", "expirationDate": "2020-11-30T05:00:00Z", "faceValue": 227, "fiAssetClasses": [ { "assetClass": "string", "percent": 924 } ], "fiAttributes": [ { "name": "string", "value": "string" } ], "heldInAccount": "string", "holdingId": "string", "holdingName": "string", "holdingSubType": "string", "holdingType": "string", "inv401kSurce": "string", "marketValue": 351, "originalPurchaseDate": "2020-11-30T05:00:00Z", "positionType": "string", "purchasedPrice": 703, "rate": 885, "securityId": "string", "securityIdType": "string", "symbol": "string", "taxLots": [ { "costBasis": 381, "currentValue": 120, "originalPurchaseDate": "2020-11-30T05:00:00Z", "postionType": "string", "purchasedPrice": 194, "quantity": 969 } ], "units": 953 } ], "interestRate": 312, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "investmentLoans": [ { "currentLoanBalance": 736, "dateAsOf": "2020-11-30T05:00:00Z", "initialLoanBalance": 8, "loanDescription": "string", "loanId": "string", "loanInterestToDate": "800", "loanMaturityDate": "2020-11-30T05:00:00Z", "loanNextPaymentDate": "2020-11-30T05:00:00Z", "loanPaymentAmount": 133, "loanPaymentFrequency": "string", "loanPaymentInitial": 543, "loanPaymentsRemaining": 64, "loanRate": 151, "loanStartDate": "2020-11-30T05:00:00Z", "loanTotalProjectedInterest": 381 } ], "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "margin": true, "marginBalance": 1, "micrNumber": "string", "nickname": "Investment Account", "openOrders": [ { "description": "string", "inv401kSource": "string", "limitPrice": 234, "orderDate": "2020-11-30T05:00:00Z", "orderDuration": "string", "orderId": "string", "orderType": "string", "securityId": "string", "securityIdType": "string", "stopPrice": 111, "subAccount": "string", "symbol": "string", "unitPrice": 840, "units": 76, "unitType": "string" } ], "parentAccountId": "string", "pensionSource": [ { "amount": 152, "asOfDate": "2020-11-30T05:00:00Z", "displayName": "string", "frequency": "string", "paymentOption": "string", "startDate": "2020-11-30T05:00:00Z" } ], "percentageChange": 379, "planId": "string", "priorInterestRate": 857, "productName": "string", "rolloverAmount": 194, "routingTransitNumber": "string", "shortBalance": 138, "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true, "vesting": [ { "otherVestAmount": 563, "otherVestPercentage": 618, "strikePrice": 515, "symbol": "string", "unVestedBalance": 185, "unVestedQuantity": 648, "vestedBalance": 76, "vestedQuantity": 923, "vestingDate": "2020-11-30T05:00:00Z", "vestingPercentage": 799 } ] } }, { "annuityAccount": { "annualIncrease": 269, "annualIncreaseType": "string", "annuityProductType": "string", "annuityValueBasis": "string", "netPresentValue": 149, "paymentAmount": 309, "paymentEndDate": "2020-11-30T05:00:00Z", "paymentFrequency": "string", "paymentStartDate": "2020-11-30T05:00:00Z", "periodCertainGuarantee": "string", "totalPaymentCount": 483 } }, { "insuranceAccount": { "accountCategory": "string", "accountId": "1254778531", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "J", "balanceType": "string", "bills": [ { "autoPayAmount": 908, "autoPayDate": "2020-11-30T05:00:00Z", "autoPayEnabled": true, "dueDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 143, "lastPaymentDate": "2020-11-30T05:00:00Z", "minimumPaymentDue": 973, "pastDueAmount": 520, "statementBalance": 16, "statementDate": "2020-11-30T05:00:00Z", "totalPaymentDue": 14 } ], "currency": { "currencyCode": "string", "currencyRate": 295, "originalCurrencyCode": "string" }, "description": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestRate": 698, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "micrNumber": "string", "nickname": "Insurance Account", "parentAccountId": "string", "policyCoverageAmount": 156, "policyEndDate": "2020-11-30T05:00:00Z", "policyPremium": 799, "policyPremiumTerm": "string", "policyStartDate": "2020-11-30T05:00:00Z", "priorInterestRate": 800, "productName": "string", "routingTransitNumber": "string", "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "loanAccount": { "accountId": "1316072226", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "COMMERCIALLOAN", "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "compoundingPeriod": "string", "currency": { "currencyCode": "string", "currencyRate": 761, "originalCurrencyCode": "string" }, "description": "string", "error": { "code": "string", "message": "string" }, "escrowBalance": 223, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestPaidYearToDate": 922, "interestRate": 922, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 734, "lastPaymentDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "loanTerm": 532, "maturityDate": "2020-11-30T05:00:00Z", "micrNumber": "string", "nextPaymentAmount": 956, "nextPaymentDate": "2020-11-30T05:00:00Z", "nickname": "Loan Account", "originalPrincipal": 60, "originatingDate": "2020-11-30T05:00:00Z", "parentAccountId": "string", "paymentFrequency": "string", "payOffAmount": 396, "principalBalance": 419, "priorInterestRate": 391, "productName": "string", "routingTransitNumber": "string", "status": "string", "totalNumberOfPayments": 503, "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "locAccount": { "accountId": "1417522980", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "CREDITCARD", "advancesApr": 930, "availableCash": 963, "availableCredit": 403, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "cashAdvanceLimit": 747, "creditLine": 638, "currency": { "currencyCode": "string", "currencyRate": 802, "originalCurrencyCode": "string" }, "currentBalance": 617, "currentRewardsBalance": 200, "description": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "financeCharges": 978, "interestRate": 981, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 921, "lastPaymentDate": "2020-11-30T05:00:00Z", "lastStmtBalance": 115, "lastStmtDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "micrNumber": "string", "minimumPaymentAmount": 314, "nextPaymentAmount": 717, "nextPaymentDate": "2020-11-30T05:00:00Z", "nickname": "LoC Account", "parentAccountId": "string", "pastDueAmount": 956, "pointsAccrued": 235, "pointsRedeemed": 160, "principalBalance": 189, "priorInterestRate": 901, "productName": "string", "purchasesApr": 53, "routingTransitNumber": "string", "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "depositAccount": { "accountId": "1602364511", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "CHECKING", "annualPercentageYield": 734, "availableBalance": 720, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "currency": { "currencyCode": "string", "currencyRate": 516, "originalCurrencyCode": "string" }, "currentBalance": 281, "description": "This is a deposit account", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestRate": 757, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "interestYtd": 170, "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "maturityDate": "2020-11-30T05:00:00Z", "micrNumber": "string", "nickname": "Deposit Account", "openingDayBalance": 242, "parentAccountId": "string", "priorInterestRate": 865, "productName": "string", "routingTransitNumber": "string", "status": "string", "term": 890, "transactionsIncluded": false, "transferIn": true, "transferOut": true } } ] }

transactions line of credit transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

data elements fdx v4 account

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

statements

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

troubleshooting api request

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


example 529

🚧

These are example responses

The following response is a starting reference for use in planning implementation for this account type. Data providers may change data elements.

Investments response

{ "investmentAccount": { "accountId": "00000000", "accountNumber": "*****6019", "accountType": "College Savings", "availableCashBalance": 0, "balanceAsOf": "2022-03-03T05:00:00Z", "balanceType": "ASSET", "currency": { "currencyCode": "USD" }, "currentValue": 51737.02, "displayName": "Individual", "holdings": [ { "cashAccount": false, "marketValue": 51737.02, "positionType": "LONG", "purchasedPrice": 18.22, "securityIdType": "ISIN", "units": 2028.903 } ], "marginBalance": 0, "nickname": "Kid's 529", } }

Transactions response

[ { "transactions": [ { "investmentTransaction": { "accountId": "00000000", "amount": -31.18, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 1.219, "subCategory": "BY", "transactionId": "9999703221", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 31.18, "category": "DD", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "9999703222", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": -1500, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 58.05, "subCategory": "BY", "transactionId": "131377067", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 1500, "category": "X2", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "131377066", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, ... ] } ]

openapi content

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

cors change log

Modern browsers have a security functionality (called the same-origin policy) which restricts web applications in one domain from accessing resources in another. Without the same-origin policy, it would be much easier for malicious websites to access resources from remote servers. Cross-origin resource sharing (CORS) allows a back end web resource to allow incoming requests from specific external sources.

When testing through a locally-stored version of our OpenAPI spec, through JavaScript in a browser, or some other testing scenarios, Akoya endpoints may return a CORS error: No Access-Control-Allow-Origin header is present on the requested resource. This is an expected error.

For more information and links to possible solutions, see Mozilla’s CORS guide, "Cross-Origin Resource Sharing (CORS)."

Change log

DateUpdate
2022-Oct-24Original

data elements fdx v4 investmentbalance

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

transactions content

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

pagination content

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


akoya v2 release content

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


token flow expired id token errors

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


pagination request

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


migration guide investments accountsv2providerid new

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

testing product responses the payment enablement endpoint

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

data access network

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

unique keys and values content

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


products products

Products

Akoya products include Account info, Balances, Investments, Payments, Transactions, Customers, and Statements. These products allow you to retrieve the data you need for your use case.

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

ProductDescriptionEndpoint
Account infoBasic account information (included with all other products)./accounts-info/v2/{providerId}
BalancesBalances and rates of bank accounts, credit cards, loans, investments, and more./balances/v2/{providerId}
InvestmentsDetailed information on underlying holdings and positions of investment accounts./accounts/v2/{providerId}/
TransactionsUp to two years of transaction data across account types, including amounts, dates, and descriptions./transactions/v2/{providerId}/{accountId}
CustomersVerified contact information on file, including name, email, address, and phone number./customers/v2/{providerId}/current
PaymentsIdentifiers necessary to make ACH and RTP payments./payments/v2/{providerId}/{accountId}/payment-networks
StatementsList of financial institution statements available to download via PDF​/statements/{version}/{providerId}/{accountId}
/statements/{version}/{providerId}/{accountId}/{statementId}

Use cases

Payment Enablement​Account Opening​Lending & ​Credit Enhancement​Personal Financial ​ManagementWealth Management & ​InvestingBusiness Financial ​Management
Balances

☑️

☑️

☑️

☑️

☑️

☑️

Transactions

☑️

☑️

☑️

☑️

Investments

☑️

Payments

☑️

☑️

Customers

☑️

☑️

☑️

Statements

☑️

☑️

* All use cases include the account info product

  • Account opening: Enable instant account opening and funding without micro-deposits.
  • Business financial management: Offer businesses the ability to aggregate their financial accounts in one place.
  • Lending & credit enhancement: Access bank or brokerage data to better inform lending decisions.
  • Payment enablement: Authorize account-to-account or person-to-person payments with instant account authentication. Payment enablement uses the payments product to request an end-user's payment account identifiers. This is not a payment initiation request.
  • Personal finance management (PFM): Provide users the ability to aggregate their financial accounts in one place.
  • Wealth management & investing: Give users and/or financial advisors the ability to collate investments, assets, and other held-away account information for one sweeping financial picture.

glossary api terminology

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

data access network connection management

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

data elements fdx v4 taxlot

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

getting started

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

mikomo change log

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

token flow refresh token error

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


redirecturi content

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

account info supported data elements

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

versioning akoya apis and breaking changes

📌

Akoya API versions are set in the path

Incremental changes in a version will be listed in release notes and maintain backward compatibility. The current Akoya version is Akoya API v2.

This guide outlines the Akoya API versioning approach and our goals in defining and supporting our users with any breaking changes created with API updates. We aim to limit breaking changes as much as possible to new API versions (a.k.a. major versions). This is achieved by only releasing non-breaking changes (a.k.a. backward compatible) to current API versions.

API major version timeline

Major releases will be communicated in advance to give our users time to understand upcoming changes. With a new major version release, the previous version will be automatically deprecated. Six months after deprecation, the previous version will be sunset. Once a version is sunset, it will no longer be available or supported.

When an API is marked as deprecated, we strongly recommend that you migrate to the latest version as soon as possible. New implementations of Akoya APIs should implement the latest (non-deprecated) major version.

Release timeline graph depicting v1 deprecating with v2 release, then sunset v1 6 months later

API release timeline

API versionRelease dateDeprecation dateSunset dateMigration guide
v1November 2, 2022May 2, 2023https://docs.akoya.com/v2/docs/migration-guide
v2November 2, 2022

Akoya APIs and breaking changes

We will increment API major version numbers for any non-backward compatible changes to an API. The following examples are principles to define breaking changes vs. non-breaking changes.

Examples of breaking (non-backward compatible) changes:

  • Changes to the URL or fundamental request/response associated with an endpoint
  • Removal, rename, or change to the type of a declared property
  • Removal, rename, or change to a data field
  • Removal or rename of APIs or API parameters
  • Addition of a required request header
  • Changes to an existing query parameter or addition of new mandatory request parameters

Examples of non-breaking (backward compatible) changes:

  • Addition of net-new data fields
  • Addition of properties that are nullable or have a default value
  • Addition of a member to an enumeration
  • Removal, rename, or change to the type of an open extension
  • Removal, rename, or change to the type of an annotation
  • Introduction of paging to existing collections
  • Addition or changes to error codes
  • Changes to the order of properties
  • Changes to the length or format of opaque strings, such as resource IDs

📘

Implementation note

A data recipient implementing Akoya APIs should expect to see non-breaking changes rolled out regularly through minor version updates. Please implement the Akoya APIs in a way that allow for these changes.


data recipient hub user manual quick start

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

coming soon create applications

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


glossary authorization authentication and tokens

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

hub manual gaining access content

🚧

One Data Recipient Hub account per company!

Your company should maintain one Data Recipient Hub team account. The first team member to join the Hub should send invitations to the remaining members of the team. This section covers how to add additional team members.


Gaining access to the the Hub is a self-service process:

Request an account by filling out our request form.

Account creation screen
Account creation screen

You’ll receive an automatically-generated email from _customersuccess@akoya.com_ with the subject line “Welcome to the Akoya Data Recipient Hub” containing a login link, your username, and temporary password. This password expires in seven days. If it does, you’ll have to re-submit the form.

At the initial login screen, you’ll be prompted to set a password of your choice and configure MFA. This process is described in the “Configuring MFA” section under “Team management.” Your company account has now been created.


transactions supported data elements

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

oauth implementation styles macos

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


postman collection environment

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

coming soon and more

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


account info deposit accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

getting started 3 get your sandbox credentials

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

migration guide accounts info accounts basicv2providerid new

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

lets be specific

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


data elements fdx v4 insuranceaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

intro to fdx footnote three

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


balances annuity accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

intro to fdx benefits

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


whats changing

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


migration guide endpoint summary

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

consent flow improvements

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

tips for using curl

cURL is a tool that allows you to make HTTP requests from the command line or through scripting. cURL makes use of libcurl, a URL transfer library. For more information, see:

curl.

Online documentation

In our online documentation, the curl command examples follow OSX/Linux/Unix command syntax.

If you are using Windows Command shell or PowerShell, there are a few notable differences in using these cURL snippets.

  • Windows does not support single quotes in Command shell. Nor does it support double quotes inside of double quotes. Each example must be edited:
    • Change single quotes to double quotes
    • If you need a double quote inside a double quote, escape the second set of double quotes, for instance: "{\"emailAddress\":\"user@example.com\"}"
  • Line continuation backslashes are used for readability and are not necessary. These backslashes may be deleted. Or, replace the backslash with a ^ in Command shell or ` in PowerShell.
OSX/Linux/UnixWindows cmd.exePowerShell
Line Continuation Character\^`
Quotes types'"'

Postman

For Postman, you may set the line continuation character and quote types by selecting settings in the code snippet box (in upper right panel of the app) then selecting the options appropriate to your OS. You may also turn off multi-line snippets which removes the line continuation backslash.

757

Postman: Open code snippet cURL settings


data recipient hub user manual overview

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

project plan initial integration connectivity

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

token flow Refresh token

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


pagination example response with paging

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


statements how to read the statement list response

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

hub manual authentication

After your account is set up, you (and any team members you add) can log into the Hub here.

Authentication options

Akoya offers two user authentication options for the Hub :

  • password-based authentication + MFA (and a biometric option) via our own identity provider (IDP). This is the "default" option.
  • single sign-on (SSO) via identity federation between the Hub and your company's IDP such as Active Directory.

Akoya-hosted accounts (the first option) are managed entirely within Team management in the Hub. Currently, only the admin role is available for these accounts.

Federated accounts (the second option) are completely managed by your company, as all user accounts and groups "live" in your IDP. Both the admin and viewer roles are available to these accounts.

Please reach out to your customer service manager (CSM) if you're interested in setting up identity federation to access the Hub. Akoya will work with you to set up the integration and to map our two user roles (admin and viewer) to the appropriate security groups on your end. Once integration is complete, you'll manage access to the Hub simply by adding/removing users from the appropriate security groups.


mikomo model response properties 2

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

hub manual data providers content

🚧

The Data Providers list includes all active providers

The “Data providers” menu option displays an exhaustive list of all active providers on the Akoya platform and does not reflect your own subscriptions. To view your subscriptions, click “My apps,” select your application, and click “Subscriptions.”


The “Data providers” section displays a list of all providers that are live on the Akoya Data Access Network (DAN).

Clicking on any provider will take you to that provider’s documentation page.

Docs page for Mikomo Bank
Docs page for Mikomo Bank

Account types tab

The “Account types” tab displays a list of all account types and their corresponding product codes.

Account types page for Mikomo Bank, our mock financial institution
Account types page for Mikomo Bank, our mock financial institution

Data Inventory tab

The “Data Inventory” tab displays a list of data elements supported by that provider.

The “Data Inventory” tab displays a list of all data elements supported by that provider.
The “Data Inventory” tab displays a list of all data elements supported by that provider.

Documentation tab

The “Documentation” tab contains documentation with implementation considerations specific to that provider.

API documentation specifics for Mikomo Bank
API documentation specifics for Mikomo Bank

Sample users tab


📘

All sample users exist in our sandbox provider, Mikomo Bank

To aid in your testing possible responses, we have also created example users for the providers in our network reflecting nuances in data elements supported. The accounts associated with these users contain dummy account data from Mikomo. We do not store actual provider account data in our systems.


The “Sample Users” tab includes a list of test accounts for use in the sandbox environment.

Test users for Mikomo Bank
Test users for Mikomo Bank

hub manual glossary content

TermDefinition
Akoya-hosted accountA user account with access to the Hub that "lives" on Akoya's IDP (when identity federation has NOT been configured)
Federated accountA user account with access to the Hub after identity federation has been configured between your company's IDP and the Hub. This would likely be the "domain account" or "network account" you use to log into your work computer and access your company's electronic resources.
Identity federationA technology that allows users to access services provided by an outside organization using their own company's login credentials. This technology enables authentication methods such as single sign-on (SSO)
ProviderA "provider" of data to the Akoya network, typically a bank or other financial institution.
RecipientA "receiver" of data from Akoya's network, typically a fintech company. In some cases, a bank or other financial institution may serve as a recipient as well.

unique keys and values id tokenrefresh token

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


products content

Products

Akoya products include Account info, Balances, Investments, Payments, Transactions, Customers, and Statements. These products allow you to retrieve the data you need for your use case.

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

ProductDescriptionEndpoint
Account infoBasic account information (included with all other products)./accounts-info/v2/{providerId}
BalancesBalances and rates of bank accounts, credit cards, loans, investments, and more./balances/v2/{providerId}
InvestmentsDetailed information on underlying holdings and positions of investment accounts./accounts/v2/{providerId}/
TransactionsUp to two years of transaction data across account types, including amounts, dates, and descriptions./transactions/v2/{providerId}/{accountId}
CustomersVerified contact information on file, including name, email, address, and phone number./customers/v2/{providerId}/current
PaymentsIdentifiers necessary to make ACH and RTP payments./payments/v2/{providerId}/{accountId}/payment-networks
StatementsList of financial institution statements available to download via PDF​/statements/{version}/{providerId}/{accountId}
/statements/{version}/{providerId}/{accountId}/{statementId}

Use cases

Payment Enablement​Account Opening​Lending & ​Credit Enhancement​Personal Financial ​ManagementWealth Management & ​InvestingBusiness Financial ​Management
Balances

☑️

☑️

☑️

☑️

☑️

☑️

Transactions

☑️

☑️

☑️

☑️

Investments

☑️

Payments

☑️

☑️

Customers

☑️

☑️

☑️

Statements

☑️

☑️

* All use cases include the account info product

  • Account opening: Enable instant account opening and funding without micro-deposits.
  • Business financial management: Offer businesses the ability to aggregate their financial accounts in one place.
  • Lending & credit enhancement: Access bank or brokerage data to better inform lending decisions.
  • Payment enablement: Authorize account-to-account or person-to-person payments with instant account authentication. Payment enablement uses the payments product to request an end-user's payment account identifiers. This is not a payment initiation request.
  • Personal finance management (PFM): Provide users the ability to aggregate their financial accounts in one place.
  • Wealth management & investing: Give users and/or financial advisors the ability to collate investments, assets, and other held-away account information for one sweeping financial picture.

migration guide statement list statementsversionprovideridaccountid new

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

data access network consent flow

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

mikomo Catalog

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

hub manual team management user roles

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

intro to fdx

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


hub manual team management deleting users

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

hub manual team management edit company details

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

data elements fdx v4 vesting

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

coming soon retrieve a statement

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


requirements content

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


implementation steps

The following steps will guide you through creation of a test app in the Akoya Sandbox.

Authenticate & select accounts

TaskDescription
Review technical requirements.See: Requirements.
Register with Akoya for Sandbox access.To register, you must provide Akoya with a redirect URI for your use with your Sandbox test app. Akoya will provide you with a client Id and secret for your app.
Securely store client_id and secretEvery App has a unique client Id and secret. They must be treated as secure information and stored securely.
UX - Provider popup or redirectIntegrate into your existing provider selection UI or build popup/ redirect flow for the end-user to select the data provider(s) they'd like to connect with your app. Upon end-user selection, initiate consent and authentication via Akoya to the provider. See: OAuth implementation styles.
Use Sandbox data for implementation and testingThe Akoya Sandbox includes a mock data provider (Mikomo Financial) with several test users that may be used for end-to-end implementation and testing. Use these test accounts for the remaining implementation steps. See: Introduction to Sandbox.
Authorization GrantAfter authentication and authorization, Akoya will return the end-user to your redirect URI with an authorization grant code in the URL with the parameter “code=”. Use this authorization code to request a set of tokens for this end-user. See: Authorization Code.
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
Id and refresh token generationExchange authorization code for ID and Refresh Token See: Token API reference and the token explainer.
Store TokenUse your current secure token storage or implement a way to store each end-user's unique tokens.
Token RevocationImplement a way for the end-user to remove access to their data provider account(s). See Revoke Token.
Error CasesCode for Authorization or Token errors. Develop UX for errors, timeouts, and reauthentication. See Authentication errors and Token API errors.
Validate authenticationValidate UX for account selection, consent, ID/Refresh Token for new and existing users.

Obtain data

TaskDescription
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
AccountsUsing the id_token retrieved in the Id and refresh token step above for a test user, make a call for data. See: API Docs - Accounts reference.
TransactionsUsing the id_token retrieved in the Id and refresh token step above for a test user, and the account Id retrieved in the Accounts step above, make a call for transaction data. See: Akoya API v2 - Transactions reference.
Error CasesCode for Akoya API v2 errors. Develop UX for errors, timeouts, and reauthentication. See Errors.
Validate DataValidate use and display of data in your own systems and UI.

unique keys and values account id

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


implementation steps content

The following steps will guide you through creation of a test app in the Akoya Sandbox.

Authenticate & select accounts

TaskDescription
Review technical requirements.See: Requirements.
Register with Akoya for Sandbox access.To register, you must provide Akoya with a redirect URI for your use with your Sandbox test app. Akoya will provide you with a client Id and secret for your app.
Securely store client_id and secretEvery App has a unique client Id and secret. They must be treated as secure information and stored securely.
UX - Provider popup or redirectIntegrate into your existing provider selection UI or build popup/ redirect flow for the end-user to select the data provider(s) they'd like to connect with your app. Upon end-user selection, initiate consent and authentication via Akoya to the provider. See: OAuth implementation styles.
Use Sandbox data for implementation and testingThe Akoya Sandbox includes a mock data provider (Mikomo Financial) with several test users that may be used for end-to-end implementation and testing. Use these test accounts for the remaining implementation steps. See: Introduction to Sandbox.
Authorization GrantAfter authentication and authorization, Akoya will return the end-user to your redirect URI with an authorization grant code in the URL with the parameter “code=”. Use this authorization code to request a set of tokens for this end-user. See: Authorization Code.
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
Id and refresh token generationExchange authorization code for ID and Refresh Token See: Token API reference and the token explainer.
Store TokenUse your current secure token storage or implement a way to store each end-user's unique tokens.
Token RevocationImplement a way for the end-user to remove access to their data provider account(s). See Revoke Token.
Error CasesCode for Authorization or Token errors. Develop UX for errors, timeouts, and reauthentication. See Authentication errors and Token API errors.
Validate authenticationValidate UX for account selection, consent, ID/Refresh Token for new and existing users.

Obtain data

TaskDescription
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
AccountsUsing the id_token retrieved in the Id and refresh token step above for a test user, make a call for data. See: API Docs - Accounts reference.
TransactionsUsing the id_token retrieved in the Id and refresh token step above for a test user, and the account Id retrieved in the Accounts step above, make a call for transaction data. See: Akoya API v2 - Transactions reference.
Error CasesCode for Akoya API v2 errors. Develop UX for errors, timeouts, and reauthentication. See Errors.
Validate DataValidate use and display of data in your own systems and UI.

account info content

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

customers

Full customer information for permissioned end-user.

Results for customers are returned in JSON in FDX format.

Endpoint: /customers

API documentation: https://docs.akoya.com/v2/reference/customer-info

Example response

{ "customer": { "customerId": "1521963501", "name": { "last": "Last", "first": "First", "middle": "H" }, "telephones": [ { "number": "9585550103" } ], "addresses": [ { "state": "TN", "city": "SPRINGFIELD", "line1": "7572 Road Rd", "postalCode": "37172-6488" } ], "email": [ "user@example.com" ] } }

Supported data elements

NameTypeDescription
customerIdstringLong-term persistent identity of the customer. This identity must be unique to the owning institution
nameobjectnone
name.firststringFirst or given name. This data element may contain first & last name if not separated.
name.middlestringnone
name.laststringnone
name.prefixstringName prefix, e.g. Mr.
name.suffixstringGenerational or academic suffix
name.companystringCompany name
addressesarray[addresses]An array of the customer's addresses
addresses.typestringThe location type of an address
addresses.line1stringMay contain full address if not separated
addresses.line2stringnone
addresses.line3stringnone
addresses.citystringnone
addresses.statestringnone
addresses.postalCodestringnone
addresses.countrystringISO 3166 Country Code
telephonesarray[telephones]An array of the customer's telephone numbers.
telephones.numberstringnone
telephones.typestringnone
telephones.countrystringCountry calling codes defined by ITU-T recommendations E.123 and E.164
emailarray[string]An array of the customer's electronic mail addresses

testing authentication

“Happy path” tests

Test caseTask(s)Expected result(s)
Successful creation of OAuth linkDirect end-user to the Mikomo login.End-user goes from your app to the provider login screen.
Valid loginGo through Mikomo’s authentication flow and reach the account selection screen.Successfully arrive at the account selection screen displaying all the user’s accounts.
Successful account selectionSelect the desired financial accounts.End-user’s accounts are selected without error.
Successful redirect to expected redirect_uriThe app/browser takes user to the success page.Successfully arrive at your app’s redirect URI.
Successful retrieval of authentication codeStore the authentication code.Authentication code is used for next step, retrieving tokens.
Successful token validationUse the Token endpoint to request refresh and ID tokens.Valid refresh_token and id_token tokens are returned. These tokens are associated with the Mikomo end-user who logged-in and the specified sandbox app, provider (Mikomo), and selected accounts.

“Sad path” tests

Test caseTask(s)Expected result(s)
Login failure (invalid connector)Provide an invalid providerId in the auth URL for connector (e.g. Mikomoo vs Mikomo).HTTP 400: Bad Request
Login failure (no connector)Provide connector without a value.HTTP 403: Forbidden

Possible: HTTP 200: OK. When this occurs, an Akoya login screen may appear and will not be usable for your end-user.
Login failure (invalid redirect_uri)1. Provide an empty redirect_uri.

2. Provide an incorrect redirect_uri.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid client_id)1. Provide an empty client_id.

2. Provide an incorrect client_id.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid response_type)Provide an empty response_type.HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_requests
Login failure (invalid scope)1. Provide an empty scope.

2. scope missing openid.
HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_scope
Login failure (invalid scope)scope missing offline_access.End-user login will be successful.

Initial token endpoint response will be missing refresh_token
Login failure (incorrect username/password)Enter incorrect user credentials.HTTP 401: Unauthorized

Receive an error message in the UI that the end-user’s username and/or password is incorrect.

how to work with akoya

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


mikomo error testing

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

tips for using curl content

cURL is a tool that allows you to make HTTP requests from the command line or through scripting. cURL makes use of libcurl, a URL transfer library. For more information, see:

curl.

Online documentation

In our online documentation, the curl command examples follow OSX/Linux/Unix command syntax.

If you are using Windows Command shell or PowerShell, there are a few notable differences in using these cURL snippets.

  • Windows does not support single quotes in Command shell. Nor does it support double quotes inside of double quotes. Each example must be edited:
    • Change single quotes to double quotes
    • If you need a double quote inside a double quote, escape the second set of double quotes, for instance: "{\"emailAddress\":\"user@example.com\"}"
  • Line continuation backslashes are used for readability and are not necessary. These backslashes may be deleted. Or, replace the backslash with a ^ in Command shell or ` in PowerShell.
OSX/Linux/UnixWindows cmd.exePowerShell
Line Continuation Character\^`
Quotes types'"'

Postman

For Postman, you may set the line continuation character and quote types by selecting settings in the code snippet box (in upper right panel of the app) then selecting the options appropriate to your OS. You may also turn off multi-line snippets which removes the line continuation backslash.

757

Postman: Open code snippet cURL settings


cors

Modern browsers have a security functionality (called the same-origin policy) which restricts web applications in one domain from accessing resources in another. Without the same-origin policy, it would be much easier for malicious websites to access resources from remote servers. Cross-origin resource sharing (CORS) allows a back end web resource to allow incoming requests from specific external sources.

When testing through a locally-stored version of our OpenAPI spec, through JavaScript in a browser, or some other testing scenarios, Akoya endpoints may return a CORS error: No Access-Control-Allow-Origin header is present on the requested resource. This is an expected error.

For more information and links to possible solutions, see Mozilla’s CORS guide, "Cross-Origin Resource Sharing (CORS)."

Change log

DateUpdate
2022-Oct-24Original

transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

hub manual my apps registering your app in sandbox

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


hub manual my apps viewingmodifying app details

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


consent flow improvements content

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

how to work with akoya next steps

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


data elements fdx v4 loctransaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

data access network permission api

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

mikomo model response properties 3

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

intro to fdx footnote one

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


testing product responses content

📘

Notes

Akoya's high-level JSON structure for API responses follow FDX specifications.

Provider-specific sample responses are documented in the Hub and should be cross-referenced when performing these tests to validate response, payload structure, and sample responses per data element.

The /accounts-info endpoint

Test caseTask(s)Expected result(s)
Return all accounts.Omit the accountIds parameter with the /accounts-info endpoint.HTTP 200: OK with non-empty JSON payload
Return one account.Set accountIds query param to an accountId retrieved in /accounts-info payload.Validate fetch for 1.
Return N accounts.Set accountIds query param to more than one accountId (comma separated) retrieved in /accounts-info payload.Validate fetch for N.

The /transactions endpoint

Test caseTask(s)Expected result(s)
Get an account’s transactions.Call /transactions.HTTP 200: OK with non-empty JSON payload
Filter transactions based on start/end time.Provide values for the startTime and endTime query parameters.startTime / endTime parameters are functioning as expected; Akoya uses ISO8601. See transactions documentation for example payloads.
Paginate through transactions.Call the /transactions endpoint using a Mikomo test account that has a very large (paginated) payload.Pagination functions as expected for payloads large enough to require it. See our documentation on pagination.
Get an account with no transactions.Call the /transactions endpoint using a Mikomo test account that has no transactions.The following HTTP response: HTTP 200: OK

Payload:
{
"transactions": []
}

The /customer endpoint

Test caseTask(s)Expected result(s)
Get an account’s customer info.Call /customers.HTTP 200: OK with non-empty JSON payload.

See Customer info

The /payment-enablement endpoint

Test caseTask(s)Expected result(s)
Get an account’s payment network info.Call /payments.HTTP 200: OK with non-empty JSON payload

See Payment networks

data elements fdx v4 accounts

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

data elements fdx v4

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

statements supported data elements

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

mikomo mikomo 5

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

balances line of credit accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

coming soon akoya management api v1

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


migration guide payment networks paymentsv2provideridaccountidpayment networks no changes

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

hub manual authentication authentication options

After your account is set up, you (and any team members you add) can log into the Hub here.

Authentication options

Akoya offers two user authentication options for the Hub :

  • password-based authentication + MFA (and a biometric option) via our own identity provider (IDP). This is the "default" option.
  • single sign-on (SSO) via identity federation between the Hub and your company's IDP such as Active Directory.

Akoya-hosted accounts (the first option) are managed entirely within Team management in the Hub. Currently, only the admin role is available for these accounts.

Federated accounts (the second option) are completely managed by your company, as all user accounts and groups "live" in your IDP. Both the admin and viewer roles are available to these accounts.

Please reach out to your customer service manager (CSM) if you're interested in setting up identity federation to access the Hub. Akoya will work with you to set up the integration and to map our two user roles (admin and viewer) to the appropriate security groups on your end. Once integration is complete, you'll manage access to the Hub simply by adding/removing users from the appropriate security groups.


statements how to use the statements product

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

troubleshooting

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


timestamps returned timestamp examples

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

testing tokens happy path tests

🚧

Token required!

Please obtain a token prior to completing this section.

"Happy path" tests

Test caseTask(s)Expected result(s)
Refresh an ID tokenCall the /token endpoint with the refresh_token.Receive valid new ID and refresh tokens.
Refresh an expired ID token1. Identify an id_token older than 24 hours.

2. Call the /token endpoint with the refresh_token.
Receive valid new ID and refresh tokens.
Revoke an ID token1. Call the /token/revoke endpoint.

2. Attempt a call to the /accounts endpoint.
1. HTTP 200: OK (empty payload)

2. HTTP 401: Unauthorized

Error payload:
{
"code": 602,
"message": "Customer not authorized"
}

“Sad path” tests

Please review our error codes documentation.

Test caseTask(s)Expected result(s)
Refresh a used refresh_token.Test a token refresh call with a refresh_token that has already been claimed.HTTP 400: Bad Request

Error payload:
{
"error": "invalid_request",
   "error_description": "Refresh token is invalid or has 
 already been claimed by another client."
}
Refresh with invalid client_secret.Try a token refresh with an invalid client_secret.HTTP 401: Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Revoke with invalid client_secret.1. Try the revoke token endpoint without a client_secret.

2. Try the revoke token endpoint with an incorrect client_secret.
1. HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request"
}


2. HTTP 401: Unauthorized

Error payload:
{
   "error": "unauthorized_client"
}
Obtain a token with invalid authorization code.1. Use the /token endpoint with an expired code.

2. Use the /token endpoint with an incorrect code.
(both tasks) HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "Invalid or expired code parameter."
}
Obtain a token with an incorrect redirect_URI.Use /token endpoint with an incorrect redirect_URI.HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "redirect_uri did not match URI 
from initial request."
}
Obtain a token with a missing grant_type field.1. Use /token endpoint with a missing grant_type field.

2. Use /token endpoint with an incorrect grant_type field.
HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_grant"
}
Obtain a token with an incorrect client_id.1. Use /token endpoint with an incorrect clientId.

2. Use /token endpoint with an incorrect client_secret.
1. HTTP 401: invalid_client

2. HTTP 401 Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Refresh a token without a refresh_token.Use /token endpoint with grant_type=refresh_token without including the current refresh_token.HTTP 400 Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "No refresh token in request."
}

how to work with akoya content

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


migration guide content

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

payments example response

Full account number and bank routing number. Includes bankId, identifier, type, and identifierType.

Results for payments are returned in JSON in FDX format.

Endpoint: /payments

API documentation: https://docs.akoya.com/v2/reference/payment-networks

Example response

{ "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }

Supported data elements

NameTypeDescription
bankIdstringBank identifier used by the payment network ie. Routing Number
identifierstringThe number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.
identifierTypestringType of identifier
typestringType of payment network
transferInbooleanCan transfer funds to the account using this information
transferOutbooleanCan transfer funds from the account using this information

oauth implementation styles mobile app

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


redirecturi

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

token flow Refresh token rotation

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo 2 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (HSA)
{ "accounts": [         {           "accountId": "474362798",           "accountNumber": "*****2211",           "accountType": "HSA",           "description": "Health Savings Account",           "displayName": "Health Savings Account",           "nickname": "Mikomo HSA"         },         {           "accountId": "8457618647",           "accountNumber": "*****0652",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         },         {           "accountId": "6782844173",           "accountNumber": "*****8327",           "accountType": "I",           "description": "Cash Management-Individual",           "displayName": "Cash Management-Individual",           "nickname": "Cash Management-Individual"         },         {           "accountId": "1604944465",           "accountNumber": "*****6531",           "accountType": "TODI",           "description": "Individual - TOD",           "displayName": "Individual - TOD",           "nickname": "INDIVIDUAL - TOD"         },         {           "accountId": "0083580481",           "accountNumber": "*****4562",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         },         {           "accountId": "4373600037",           "accountNumber": "*****6950",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "INDIVIDUAL"         },         {           "accountId": "5430168474",           "accountNumber": "*****1975",           "accountType": "I",           "description": "Cash Management-Individual",           "displayName": "Cash Management-Individual",           "nickname": "Cash Management-Individual"         },         {           "accountId": "1901964658",           "accountNumber": "*****1060",           "accountType": "I",           "description": "Individual",           "displayName": "Individual",           "nickname": "Individual"         }       ]     }
{       "accounts": {         "investmentAccount": [           { "accountId": "474362798", "accountNumber": "*****2211", "accountType": "HSA", "availableCashBalance": 5937.45, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Health Savings Account", "nickname": "Mikomo HSA", "holdings": [ { "securityId": "788400567", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 5937.45, "symbol": "MIKOMO", "marketValue": 5937.45 } ], "transactions": [ { "securityIdType": "CUSIP", "securityId": "788400567", "transactionTimestamp": 1606712400, "transactionId": "491564048", "category": "IA", "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": -0.02, "unitPrice": 1, "shares": 0.02, "status": "POSTED", "subCategory": "BY", "symbol": "MIKOMO", "accountId": "474362798" }, { "transactionTimestamp": 1606712400, "transactionId": "491564047", "category": "DV", "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": 0.02, "unitPrice": 0, "shares": 0, "status": "POSTED", "subCategory": "IT", "accountId": "474362798" }, { "securityIdType": "CUSIP", "securityId": "788400567", "transactionTimestamp": 1607460317, "transactionId": "1408513721", "category": "IA", "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)", "amount": -10.05, "unitPrice": 1, "shares": 10.05, "status": "POSTED", "subCategory": "BY", "symbol": "MIKOMO", "accountId": "474362798" }, { "securityIdType": "CUSIP", "securityId": "2074929871", "transactionTimestamp": 1606107600, "transactionId": "667937335", "category": "IA", "description": "YOU SOLD BERKSHIRE HATHAWAY INC COM USD0.0033 CL (BRKB) (Cash)", "amount": 10.05, "unitPrice": 0, "shares": -10.05, "status": "POSTED", "subCategory": "SL", "symbol": "MIKOMO", "accountId": "474362798" } ] }, { "accountId": "8457618647", "accountNumber": "*****9277", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "6782844173", "accountNumber": "*****2431", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1604944465", "accountNumber": "*****5212", "accountType": "TODI", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 11067.73, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 2013.16, "positionType": "LONG", "purchasedPrice": 2, "securityId": "00084DAQ3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.09, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 65.983 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 9054.57, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 9054.57 } ], "nickname": "INDIVIDUAL - TOD", "transactions": [ { "accountId": "1604944465", "amount": -10.82, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10.82, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1378762715", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1604944465", "amount": 10.82, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "1378762716", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1604944465", "amount": -0.11, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.11, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1378762717", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "1604944465", "amount": 0.11, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1378762718", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM FZFXX TO FCASH ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": -9043.64, "status": "POSTED", "subCategory": "SL", "symbol": "FZFXX", "transactionId": "1103351732", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FCASH IS LIQUID ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 9043.64, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1103351733", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "1604944465", "amount": 0, "description": " EXCHANGED TO FCASH ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FCASH", "transactionId": "1103351734", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "0083580481", "accountNumber": "*****2071", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }, { "accountId": "4373600037", "accountNumber": "*****9727", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 125.32, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 125.32, "positionType": "LONG", "securityId": "316341304", "securityIdType": "CUSIP", "symbol": "FZFXX", "units": 125.32 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "4373600037", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "167178143", "transactionTimestamp": 1569816000, "unitPrice": 1 }, { "accountId": "4373600037", "amount": 0.03, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FZFXX", "transactionId": "167178142", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "167178141", "transactionTimestamp": 1569816000, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "category": "ZZ", "description": "TRANSFERRED TO FZFXX IS LIQUID ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 125.14, "status": "POSTED", "subCategory": "BY", "symbol": "FZFXX", "transactionId": "442589127", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "description": " EXCHANGED TO FZFXX ", "securityId": "316341304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "OC", "symbol": "FZFXX", "transactionId": "442589126", "transactionTimestamp": 1569297600, "unitPrice": 0 }, { "accountId": "4373600037", "amount": 0, "category": "ZZ", "description": "TRANSFERRED FROM SPAXX TO FZFXX ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -125.14, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "442589125", "transactionTimestamp": 1569297600, "unitPrice": 0 } ] }, { "accountId": "5430168474", "accountNumber": "*****9275", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Cash Management-Individual", "nickname": "Cash Management-Individual" }, { "accountId": "1901964658", "accountNumber": "*****9276", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1606780800, "balanceType": "ASSET", "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "currentValue": 0, "displayName": "Individual", "nickname": "Individual" }         ]       }     }
{       "transactions": {           "InvestmentTransaction": [             {               "accountId": "474362798",               "transactionId": "491564048",               "transactionTimestamp": "2020-11-30T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -0.02             },             {               "accountId": "474362798",               "transactionId": "491564047",               "transactionTimestamp": "2020-11-30T05:00:00Z",               "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "DV",               "subCategory": "IT",               "amount": 0.02             },             {               "accountId": "474362798",               "transactionId": "1408513721",               "transactionTimestamp": "2020-11-25T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -10.05             },             {               "accountId": "474362798",               "transactionId": "667937335",               "transactionTimestamp": "2020-11-23T05:00:00Z",               "description": "YOU SOLD BERKSHIRE HATHAWAY INC COM USD0.0033 CL (BRKB) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 10.05             },             {               "accountId": "474362798",               "transactionId": "133135276",               "transactionTimestamp": "2020-11-18T05:00:00Z",               "description": "REDEMPTION FROM CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 200.56             },             {               "accountId": "474362798",               "transactionId": "992158578",               "transactionTimestamp": "2020-11-16T05:00:00Z",               "description": "YOU BOUGHT MODERNA INC COM (MRNA) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -200.56             },             {               "accountId": "474362798",               "transactionId": "1092486826",               "transactionTimestamp": "2020-11-12T05:00:00Z",               "description": "REINVESTMENT APPLE INC COM USD0.00001 (AAPL) (Cash)",               "category": "DV",               "subCategory": "RN",               "amount": -1.33             },             {               "accountId": "474362798",               "transactionId": "1092486825",               "transactionTimestamp": "2020-11-12T05:00:00Z",               "description": "DIVIDEND RECEIVED APPLE INC COM USD0.00001 (AAPL) (Cash)",               "category": "DV",               "subCategory": "VP",               "amount": 1.33             },             {               "accountId": "474362798",               "transactionId": "400172591",               "transactionTimestamp": "2020-11-10T05:00:00Z",               "description": "REDEMPTION FROM CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 84.59             },             {               "accountId": "474362798",               "transactionId": "400172588",               "transactionTimestamp": "2020-11-10T05:00:00Z",               "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",               "category": "IA",               "subCategory": "OC",               "amount": 115.38             },             {               "accountId": "474362798",               "transactionId": "2042877271",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -501.13             },             {               "accountId": "474362798",               "transactionId": "2042877270",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "DIVIDEND RECEIVED ISHARES IBOXX $ INVESTMENT GRADE CORPOR (LQD) (Cash)",               "category": "DV",               "subCategory": "VP",               "amount": 1.13             },             {               "accountId": "474362798",               "transactionId": "2042877269",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU BOUGHT TWITTER INC COM USD0.000005 (TWTR) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -172             },             {               "accountId": "474362798",               "transactionId": "2042877268",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU BOUGHT TWITTER INC COM USD0.000005 (TWTR) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -27.97             },             {               "accountId": "474362798",               "transactionId": "2042877266",               "transactionTimestamp": "2020-11-06T05:00:00Z",               "description": "YOU SOLD FIDELITY GOVERNMENT CASH RESERVES (FDRXX) (Cash)",               "category": "IA",               "subCategory": "SL",               "amount": 500             },             {               "accountId": "474362798",               "transactionId": "877407259",               "transactionTimestamp": "2020-10-30T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -0.01             },             {               "accountId": "474362798",               "transactionId": "877407260",               "transactionTimestamp": "2020-10-30T04:00:00Z",               "description": "INTEREST EARNED FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "DV",               "subCategory": "IT",               "amount": 0.01             },             {               "accountId": "474362798",               "transactionId": "644847797",               "transactionTimestamp": "2020-10-23T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -115.39             },             {               "accountId": "474362798",               "transactionId": "644847796",               "transactionTimestamp": "2020-10-23T04:00:00Z",               "description": "PARTIC CONTR CURRENT PARTICIPANT CUR YR (Cash)",               "category": "IA",               "subCategory": "OC",               "amount": 115.39             },             {               "accountId": "474362798",               "transactionId": "911885110",               "transactionTimestamp": "2020-10-15T04:00:00Z",               "description": "PURCHASE INTO CORE ACCOUNT FDIC INSURED DEPOSIT AT MIKOMO HSA NO (MIKOMO) (Cash)",               "category": "IA",               "subCategory": "BY",               "amount": -1.7             }           ]         }       }

token flow refresh token expirations

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo model response

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

getting started

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

tips for using curl

cURL is a tool that allows you to make HTTP requests from the command line or through scripting. cURL makes use of libcurl, a URL transfer library. For more information, see:

curl.

Online documentation

In our online documentation, the curl command examples follow OSX/Linux/Unix command syntax.

If you are using Windows Command shell or PowerShell, there are a few notable differences in using these cURL snippets.

  • Windows does not support single quotes in Command shell. Nor does it support double quotes inside of double quotes. Each example must be edited:
    • Change single quotes to double quotes
    • If you need a double quote inside a double quote, escape the second set of double quotes, for instance: "{\"emailAddress\":\"user@example.com\"}"
  • Line continuation backslashes are used for readability and are not necessary. These backslashes may be deleted. Or, replace the backslash with a ^ in Command shell or ` in PowerShell.
OSX/Linux/UnixWindows cmd.exePowerShell
Line Continuation Character\^`
Quotes types'"'

Postman

For Postman, you may set the line continuation character and quote types by selecting settings in the code snippet box (in upper right panel of the app) then selecting the options appropriate to your OS. You may also turn off multi-line snippets which removes the line continuation backslash.

757

Postman: Open code snippet cURL settings


mikomo 3 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
  • Transactions (Individual)
{         "accounts": [           {             "accountId": "1058527205",             "accountNumber": "*****1463",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1354412159",             "accountNumber": "*****5176",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "ROLLOVER IRA"           },           {             "accountId": "1857906311",             "accountNumber": "*****4146",             "accountType": "TIC",             "description": "Joint TIC",             "displayName": "Joint TIC",             "nickname": "Joint TIC"           },           {             "accountId": "1747792082",             "accountNumber": "*****3795",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Level 3"           },           {             "accountId": "892195915",             "accountNumber": "*****9699",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "House Fund"           },           {             "accountId": "212512418",             "accountNumber": "*****4512",             "accountType": "IRAB",             "description": "IRA - BDA",             "displayName": "IRA - BDA",             "nickname": "IRA - BDA"           },           {             "accountId": "868876526",             "accountNumber": "*****3826",             "accountType": "TIC",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1703786627",             "accountNumber": "*****8180",             "accountType": "TODJ",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1058497228",             "accountNumber": "*****1569",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1267662784",             "accountNumber": "*****6789",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1157850082",             "accountNumber": "*****5045",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "ROLLOVER IRA"           },           {             "accountId": "1857010597",             "accountNumber": "*****5068",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "668076213",             "accountNumber": "*****2036",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           },           {             "accountId": "1267662877",             "accountNumber": "*****6786",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1881890174",             "accountNumber": "*****9220",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "INDIVIDUAL"           },           {             "accountId": "360171549",             "accountNumber": "*****1184",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "INDIVIDUAL"           },           {             "accountId": "1747769917",             "accountNumber": "*****3817",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "TestAccount"           },           {             "accountId": "1177379104",             "accountNumber": "*****7428",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1704763220",             "accountNumber": "*****9317",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "868876557",             "accountNumber": "*****3827",             "accountType": "J",             "description": "Cash Management-Joint",             "displayName": "Cash Management-Joint",             "nickname": "Cash Management-Joint"           },           {             "accountId": "1704022165",             "accountNumber": "*****8953",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1857906280",             "accountNumber": "*****4147",             "accountType": "TODJ",             "description": "Joint WROS - TOD",             "displayName": "Joint WROS - TOD",             "nickname": "Joint WROS - TOD"           },           {             "accountId": "1747852718",             "accountNumber": "*****3582",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Level 7"           },           {             "accountId": "1857695883",             "accountNumber": "*****4865",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1177379073",             "accountNumber": "*****7429",             "accountType": "IRA",             "description": "Traditional IRA",             "displayName": "Traditional IRA",             "nickname": "Traditional IRA"           },           {             "accountId": "1747770816",             "accountNumber": "*****3809",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Jim K's OrderMarking test"           },           {             "accountId": "425673116",             "accountNumber": "*****6368",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1110332638",             "accountNumber": "*****7178",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "425669179",             "accountNumber": "*****6325",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1783782214",             "accountNumber": "*****2233",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "THE DELTA PILOTS DEFINED"           },           {             "accountId": "357183466",             "accountNumber": "*****0967",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "91572249",             "accountNumber": "*****5180",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "My Brokerage"           },           {             "accountId": "1747769018",             "accountNumber": "*****3825",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Option Levelkamakshi"           },           {             "accountId": "88600589",             "accountNumber": "*****8808",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "DIA and INV OBJ"           },           {             "accountId": "869738357",             "accountNumber": "*****4600",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "1704025916",             "accountNumber": "*****8990",             "accountType": "I",             "description": "Individual",             "displayName": "Individual",             "nickname": "Individual"           },           {             "accountId": "668169523",             "accountNumber": "*****2379",             "accountType": "ROTH",             "description": "ROTH IRA",             "displayName": "ROTH IRA",             "nickname": "ROTH IRA"           },           {             "accountId": "1078746320",             "accountNumber": "*****6320",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "NATIONWIDE SAVINGS PLAN"           }         ]       }
{ "accounts": { "investmentAccount": [ { "accountId": "1058527205", "accountNumber": "*****1463", "accountType": "I", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "1354412159", "accountNumber": "*****5176", "accountType": "IRRL", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "Rollover IRA", "nickname": "ROLLOVER IRA" }, { "accountId": "1857906311", "accountNumber": "*****4146", "accountType": "TIC", "availableCashBalance": 5662.24, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 5662.24, "displayName": "Joint TIC", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 5662.24, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 5662.24 } ], "nickname": "Joint TIC", "transactions": [ { "accountId": "1857906311", "amount": -6.05, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 6.05, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "6524215", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1857906311", "amount": 6.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "6524214", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1747792082", "accountNumber": "*****3795", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1920117.88, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 43.79, "positionType": "LONG", "purchasedPrice": 52.8, "securityId": "05329W102", "securityIdType": "CUSIP", "symbol": "AN", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 653.24, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 62711, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 1100 }, { "averageCost": false, "cashAccount": false, "marketValue": -8650, "positionType": "LONG", "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": -200 }, { "averageCost": false, "cashAccount": false, "marketValue": 582.4, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 13 }, { "averageCost": true, "cashAccount": false, "marketValue": 3, "positionType": "LONG", "purchasedPrice": 13.22, "securityId": "450913108", "securityIdType": "CUSIP", "symbol": "IAG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 816.73, "positionType": "LONG", "purchasedPrice": 0.01, "securityId": "CURJPY059", "securityIdType": "CUSIP", "symbol": "JPY", "units": 89064.51 }, { "averageCost": true, "cashAccount": false, "marketValue": 18358.07, "positionType": "LONG", "purchasedPrice": 8.35, "securityId": "067901108", "securityIdType": "CUSIP", "symbol": "ABX:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 86215.54, "positionType": "LONG", "purchasedPrice": 55.54, "securityId": "063671101", "securityIdType": "CUSIP", "symbol": "BMO:CA", "units": 1100 }, { "averageCost": false, "cashAccount": false, "marketValue": 21043.8, "positionType": "LONG", "securityId": "067806109", "securityIdType": "CUSIP", "symbol": "B", "units": 324 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9.64, "securityId": "451055107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 129, "positionType": "LONG", "purchasedPrice": 98.95, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 45197.1, "positionType": "LONG", "purchasedPrice": 6.66, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 390 }, { "averageCost": true, "cashAccount": false, "marketValue": 2244.68, "positionType": "LONG", "purchasedPrice": 13.86, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 68 }, { "averageCost": true, "cashAccount": false, "marketValue": 442.09, "positionType": "LONG", "purchasedPrice": 41.35, "securityId": "459044103", "securityIdType": "CUSIP", "symbol": "IBOC", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 444.5, "positionType": "LONG", "purchasedPrice": 11.78, "securityId": "74373B109", "securityIdType": "CUSIP", "symbol": "PTI", "units": 254 }, { "averageCost": true, "cashAccount": false, "marketValue": 29301.72, "positionType": "LONG", "purchasedPrice": 21.3, "securityId": "136385101", "securityIdType": "CUSIP", "symbol": "CNQ:CA", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3954.04, "positionType": "LONG", "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 41 }, { "averageCost": false, "cashAccount": false, "marketValue": 2018.88, "positionType": "LONG", "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 701 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 149.59, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 192.84, "securityId": "53578A108", "securityIdType": "CUSIP", "units": 32 }, { "averageCost": true, "cashAccount": false, "marketValue": 56058.77, "positionType": "LONG", "purchasedPrice": 39.34, "securityId": "891160509", "securityIdType": "CUSIP", "symbol": "TD:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 234.02, "positionType": "LONG", "purchasedPrice": 188.94, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -200 }, { "averageCost": false, "cashAccount": false, "marketValue": 12501.46, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1411 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.51, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 1023 }, { "averageCost": true, "cashAccount": false, "marketValue": 77.88, "positionType": "LONG", "purchasedPrice": 6.17, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 11 }, { "averageCost": false, "cashAccount": false, "marketValue": 476140, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 8950 }, { "averageCost": false, "cashAccount": false, "marketValue": 2043.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 67 }, { "averageCost": true, "cashAccount": false, "marketValue": 436.2, "positionType": "LONG", "purchasedPrice": 123.79, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 7813.05, "positionType": "LONG", "purchasedPrice": 116.15, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 35 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.43, "securityId": "25459W516", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 34.79, "positionType": "LONG", "purchasedPrice": 31.56, "securityId": "G4740B105", "securityIdType": "CUSIP", "symbol": "ICHR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 17.83, "securityId": "45074Q108", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 17328, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.41, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 405749.34, "positionType": "LONG", "purchasedPrice": 132.82, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1251 }, { "averageCost": false, "cashAccount": false, "marketValue": -12404, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": -1400 }, { "averageCost": true, "cashAccount": false, "marketValue": 19120, "positionType": "LONG", "purchasedPrice": 70.53, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 250 }, { "averageCost": true, "cashAccount": false, "marketValue": 46814.75, "positionType": "LONG", "purchasedPrice": 7.2, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 995 }, { "averageCost": false, "cashAccount": false, "marketValue": 9020.88, "positionType": "LONG", "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 136 }, { "averageCost": true, "cashAccount": false, "marketValue": 840.2, "positionType": "LONG", "purchasedPrice": 9.19, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 5 }, { "averageCost": false, "cashAccount": false, "marketValue": 6, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 80112.09, "positionType": "LONG", "purchasedPrice": 57.25, "securityId": "780087102", "securityIdType": "CUSIP", "symbol": "RY:CA", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 191.94, "positionType": "LONG", "purchasedPrice": 11.62, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 2579.66, "positionType": "LONG", "securityId": "316345305", "securityIdType": "CUSIP", "symbol": "FLPSX", "units": 52.411 }, { "averageCost": true, "cashAccount": false, "marketValue": 278.09, "positionType": "LONG", "purchasedPrice": 153.61, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 20.56, "securityId": "25459W144", "securityIdType": "CUSIP", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.94, "securityId": "449489103", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.4, "positionType": "LONG", "purchasedPrice": 13.94, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 9328.88, "positionType": "LONG", "purchasedPrice": 83.88, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 44 }, { "averageCost": true, "cashAccount": false, "marketValue": 4325, "positionType": "LONG", "purchasedPrice": 47.63, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 434226, "positionType": "LONG", "purchasedPrice": 17.65, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 11720 }, { "averageCost": true, "cashAccount": false, "marketValue": 2613.88, "positionType": "LONG", "purchasedPrice": 30.1, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 202 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 8.29, "securityId": "582411104", "securityIdType": "CUSIP", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2897.93, "positionType": "LONG", "purchasedPrice": 0.39, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 2633.29 }, { "averageCost": false, "cashAccount": false, "marketValue": 681.29, "positionType": "LONG", "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 48.08 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.51, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 2952.9, "positionType": "LONG", "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 9 }, { "averageCost": true, "cashAccount": false, "marketValue": 51.67, "positionType": "LONG", "purchasedPrice": 47.46, "securityId": "540424108", "securityIdType": "CUSIP", "symbol": "L", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 31437.44, "positionType": "LONG", "purchasedPrice": 26.43, "securityId": "867224107", "securityIdType": "CUSIP", "symbol": "SU:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 44.82, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.72, "securityId": "62913F201", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": -115443.48, "positionType": "LONG", "purchasedPrice": 6.17, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -687 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.11, "positionType": "LONG", "purchasedPrice": 39.08, "securityId": "876568502", "securityIdType": "CUSIP", "symbol": "TTM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.31, "securityId": "100853KZ2", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 111.6, "positionType": "LONG", "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 9.07, "positionType": "LONG", "purchasedPrice": 12.06, "securityId": "44949L105", "securityIdType": "CUSIP", "symbol": "IEC", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 143886.05, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1045 }, { "averageCost": true, "cashAccount": false, "marketValue": 3036, "positionType": "LONG", "purchasedPrice": 8.55, "securityId": "11373M107", "securityIdType": "CUSIP", "symbol": "BRKL", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 11.99, "positionType": "LONG", "purchasedPrice": 15.21, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1280.53, "positionType": "LONG", "purchasedPrice": 0.76, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 1690.82 }, { "averageCost": true, "cashAccount": false, "marketValue": 1773.75, "positionType": "LONG", "purchasedPrice": 0.76, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 2628.17 }, { "averageCost": true, "cashAccount": false, "marketValue": 1349.59, "positionType": "LONG", "purchasedPrice": 8.62, "securityId": "893662106", "securityIdType": "CUSIP", "symbol": "TGL:CA", "units": 1100 } ], "marginBalance": 1736771.29, "nickname": "Option Level 3", "transactions": [ { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " DIV OF $0.20 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0, "category": "IA", "description": " DIV OF $0.60 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -8.2, "category": "IA", "description": "YOU BOUGHT ", "securityId": "82968B103", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "SIRI", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 7.19846 }, { "accountId": "1747792082", "amount": -108.66, "category": "IA", "description": "YOU BOUGHT SHORT COVER ", "securityId": "988498101", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "YUM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 106.658 }, { "accountId": "1747792082", "amount": -13.02, "category": "IA", "description": "YOU BOUGHT ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.0235 }, { "accountId": "1747792082", "amount": 11.01, "category": "IA", "description": "YOU SOLD ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.0235 }, { "accountId": "1747792082", "amount": -13.2, "category": "IA", "description": "YOU BOUGHT ", "securityId": "767754872", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "RAD", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 12.2035 }, { "accountId": "1747792082", "amount": 13.54, "category": "IA", "description": "YOU SOLD ", "securityId": "013872106", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "AA", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 14.5485 }, { "accountId": "1747792082", "amount": -34.4, "category": "IA", "description": "YOU BOUGHT SHORT COVER ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "BAC", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 33.3985 }, { "accountId": "1747792082", "amount": 104.64, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "988498101", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "YUM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 106.653 }, { "accountId": "1747792082", "amount": -14.03, "category": "IA", "description": "YOU BOUGHT ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 1, "status": "PENDING", "subCategory": "BY", "symbol": "GE", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 13.0285 }, { "accountId": "1747792082", "amount": 8535.57, "category": "IA", "description": "YOU SOLD ;REF/MD/SPAR ; ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": -200, "status": "PENDING", "subCategory": "SL", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": 4279.31, "category": "IA", "description": "YOU SOLD ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": -100, "status": "PENDING", "subCategory": "SL", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": -4289.3, "category": "IA", "description": "YOU BOUGHT ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 100, "status": "PENDING", "subCategory": "BY", "symbol": "BOOM", "transactionId": "20606463", "transactionTimestamp": 1580274000, "unitPrice": 42.8435 }, { "accountId": "1747792082", "amount": 2.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "920389096", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -337.25, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "716416889", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2497.15, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765320 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "716416890", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 337.25, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "716416891", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2148, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "1986150853", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -12966.79, "category": "IA", "description": "YOU BOUGHT ", "securityId": "345370860", "securityIdType": "CUSIP", "shares": 1400, "status": "POSTED", "subCategory": "BY", "symbol": "F", "transactionId": "1986150831", "transactionTimestamp": 1579755600, "unitPrice": 9.25846 }, { "accountId": "1747792082", "amount": -93.58, "category": "IA", "description": "YOU BOUGHT ", "securityId": "345370860", "securityIdType": "CUSIP", "shares": 10, "status": "POSTED", "subCategory": "BY", "symbol": "F", "transactionId": "1986150830", "transactionTimestamp": 1579755600, "unitPrice": 9.25846 }, { "accountId": "1747792082", "amount": -347.49, "category": "IA", "description": "YOU BOUGHT ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 10, "status": "POSTED", "subCategory": "BY", "symbol": "BAC", "transactionId": "1986150829", "transactionTimestamp": 1579755600, "unitPrice": 34.3485 }, { "accountId": "1747792082", "amount": -35.36, "category": "IA", "description": "YOU BOUGHT ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "BAC", "transactionId": "1986150828", "transactionTimestamp": 1579755600, "unitPrice": 34.3585 }, { "accountId": "1747792082", "amount": 339.48, "category": "IA", "description": "YOU SOLD ", "securityId": "060505104", "securityIdType": "CUSIP", "shares": -10, "status": "POSTED", "subCategory": "SL", "symbol": "BAC", "transactionId": "1986150827", "transactionTimestamp": 1579755600, "unitPrice": 34.3485 }, { "accountId": "1747792082", "amount": 348.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1312478375", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0.9, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1312478374", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -5917.92, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 1,690,834DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1864151401", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -32.94, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765081 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "338985403", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2676.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "338985404", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2676.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "338985407", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 20.44, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "105679664", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 12.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BOOM", "transactionId": "105679663", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 35.57, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1717826031", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -35.57, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1717826032", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 35.57, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638031", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -35.57, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638030", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -785.28, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638029", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 785.28, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "481638028", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 0.81, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1705633506", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -2320.1, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "997629769", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 2320.1, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "997629766", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 4.35, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "849846193", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": -1022.15, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "849846192", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747792082", "amount": 1022.15, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "849846190", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "892195915", "accountNumber": "*****9699", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 95230662.44, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1019.27, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6N2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 152.09, "positionType": "LONG", "purchasedPrice": 18.01, "securityId": "316066406", "securityIdType": "CUSIP", "symbol": "FTQGX", "units": 5.65 }, { "averageCost": true, "cashAccount": false, "marketValue": 1000.8, "positionType": "LONG", "purchasedPrice": 1, "securityId": "15135KBM2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "254673BU9", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1002.81, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FJS7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 387.4, "positionType": "LONG", "purchasedPrice": 39.67, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2488.29, "positionType": "LONG", "purchasedPrice": 311.76, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 16.038 }, { "averageCost": true, "cashAccount": false, "marketValue": 23635, "positionType": "LONG", "purchasedPrice": 23.5, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "824593BC0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 313680, "positionType": "LONG", "purchasedPrice": 1338.12, "securityId": "836999102", "securityIdType": "CUSIP", "symbol": "GKR1", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 20.84, "securityId": "52470B305", "securityIdType": "CUSIP", "units": 47819.173 }, { "averageCost": false, "cashAccount": false, "marketValue": 65324000, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 200000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.01, "securityId": "20033AWJ1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": -5969.11, "positionType": "LONG", "securityId": "25179M103", "securityIdType": "CUSIP", "symbol": "DVN", "units": -269 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.7, "positionType": "LONG", "purchasedPrice": 35.9, "securityId": "456788108", "securityIdType": "CUSIP", "symbol": "INFY", "units": 45 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "36966R2T2", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5195.52, "positionType": "LONG", "purchasedPrice": 16.21, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 1804 }, { "averageCost": false, "cashAccount": false, "marketValue": 4303684.9, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 75490 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 49.11, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 1301 }, { "averageCost": true, "cashAccount": false, "marketValue": 313708, "positionType": "LONG", "purchasedPrice": 1322.97, "securityId": "999999717", "securityIdType": "CUSIP", "symbol": "GKA1", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3350.11, "positionType": "LONG", "purchasedPrice": 0.01, "securityId": "CURJPY059", "securityIdType": "CUSIP", "symbol": "JPY", "units": 365329.76 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "00202RAA4", "securityIdType": "CUSIP", "units": 7000 }, { "averageCost": true, "cashAccount": false, "marketValue": 57707.1, "positionType": "LONG", "purchasedPrice": 25.08, "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 870 }, { "averageCost": true, "cashAccount": false, "marketValue": 1500093.08, "positionType": "LONG", "purchasedPrice": 11.33, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 8927 }, { "averageCost": true, "cashAccount": false, "marketValue": 14461.01, "positionType": "LONG", "purchasedPrice": 164.25, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 104 }, { "averageCost": true, "cashAccount": false, "marketValue": 2583, "positionType": "LONG", "purchasedPrice": 9.08, "securityId": "12811L107", "securityIdType": "CUSIP", "symbol": "CHW", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 56.89, "positionType": "LONG", "purchasedPrice": 51.92, "securityId": "844741108", "securityIdType": "CUSIP", "symbol": "LUV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 371.03, "positionType": "LONG", "purchasedPrice": 95.16, "securityId": "806857108", "securityIdType": "CUSIP", "symbol": "SLB", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 12117.89, "positionType": "LONG", "purchasedPrice": 0.88, "securityId": "P9802B109", "securityIdType": "CUSIP", "symbol": "VITRO_A:MX", "units": 5500 }, { "averageCost": true, "cashAccount": false, "marketValue": 12940, "positionType": "LONG", "purchasedPrice": 40.04, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 446.04, "positionType": "LONG", "purchasedPrice": 41.97, "securityId": "055622104", "securityIdType": "CUSIP", "symbol": "BP", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHX8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 16454, "positionType": "LONG", "purchasedPrice": 65.36, "securityId": "29476L107", "securityIdType": "CUSIP", "symbol": "EQR", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PU54", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -4.17, "positionType": "LONG", "securityId": "315910836", "securityIdType": "CUSIP", "symbol": "FNMIX", "units": -0.275 }, { "averageCost": true, "cashAccount": false, "marketValue": 4162.5, "positionType": "LONG", "purchasedPrice": 14.08, "securityId": "128117108", "securityIdType": "CUSIP", "symbol": "CHI", "units": 370 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.01, "securityId": "06428FJP3", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": false, "cashAccount": false, "marketValue": -80182.98, "positionType": "LONG", "securityId": "097023105", "securityIdType": "CUSIP", "symbol": "BA", "units": -249 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.03, "securityId": "T4210N122", "securityIdType": "CUSIP", "units": 6600 }, { "averageCost": true, "cashAccount": false, "marketValue": 2491.86, "positionType": "LONG", "purchasedPrice": 62.35, "securityId": "33733E302", "securityIdType": "CUSIP", "symbol": "FDN", "units": 17 }, { "averageCost": true, "cashAccount": false, "marketValue": 30007.2, "positionType": "LONG", "purchasedPrice": 100, "securityId": "37046ACC7", "securityIdType": "CUSIP", "units": 30000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6753.6, "positionType": "LONG", "purchasedPrice": 27.41, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 201 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "760296FM0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1055.91, "positionType": "LONG", "purchasedPrice": 95.32, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 99.147 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.95, "securityId": "013817101", "securityIdType": "CUSIP", "units": 1378 }, { "averageCost": true, "cashAccount": false, "marketValue": 105.3, "positionType": "LONG", "purchasedPrice": 11.44, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 8461.81, "positionType": "LONG", "purchasedPrice": 0.78, "securityId": "CURSGD105", "securityIdType": "CUSIP", "symbol": "SGD", "units": 11518.22 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 61.17, "securityId": "73935A104", "securityIdType": "CUSIP", "units": 2900 }, { "averageCost": true, "cashAccount": false, "marketValue": 5, "positionType": "LONG", "purchasedPrice": 8.14, "securityId": "496902404", "securityIdType": "CUSIP", "symbol": "KGC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FCK1", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 27208, "positionType": "LONG", "purchasedPrice": 35.83, "securityId": "127097103", "securityIdType": "CUSIP", "symbol": "COG", "units": 1900 }, { "averageCost": true, "cashAccount": false, "marketValue": -1806, "positionType": "LONG", "purchasedPrice": 9.83, "securityId": "55262C100", "securityIdType": "CUSIP", "symbol": "MBI", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.12, "securityId": "090688AA0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 6.86, "securityId": "G93285107", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11790, "positionType": "LONG", "purchasedPrice": 11.36, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3353.9, "positionType": "LONG", "purchasedPrice": 39.21, "securityId": "783554850", "securityIdType": "CUSIP", "symbol": "RYBAX", "units": 65.036 }, { "averageCost": true, "cashAccount": false, "marketValue": 250090, "positionType": "LONG", "purchasedPrice": 1, "securityId": "909557HC7", "securityIdType": "CUSIP", "units": 250000 }, { "averageCost": true, "cashAccount": false, "marketValue": 65595, "positionType": "LONG", "purchasedPrice": 7.42, "securityId": "269246401", "securityIdType": "CUSIP", "symbol": "ETFC", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 181750.8, "positionType": "LONG", "purchasedPrice": 0.77, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1320 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.8, "positionType": "LONG", "purchasedPrice": 3.99, "securityId": "378973408", "securityIdType": "CUSIP", "symbol": "GSAT", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": -1772070.3, "positionType": "LONG", "purchasedPrice": 1.17, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": -12870 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "912796JB6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "465076JV0", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KLZ5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.69, "securityId": "13643E105", "securityIdType": "CUSIP", "units": 4500 }, { "averageCost": true, "cashAccount": false, "marketValue": 66231.05, "positionType": "LONG", "purchasedPrice": 2.16, "securityId": "P4948K121", "securityIdType": "CUSIP", "symbol": "GRUMA_B:MX", "units": 5950 }, { "averageCost": true, "cashAccount": false, "marketValue": 10466.27, "positionType": "LONG", "purchasedPrice": 12.01, "securityId": "316448885", "securityIdType": "CUSIP", "symbol": "FSAZX", "units": 832.639 }, { "averageCost": true, "cashAccount": false, "marketValue": 197.58, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 1535.72 }, { "averageCost": true, "cashAccount": false, "marketValue": 19550, "positionType": "LONG", "purchasedPrice": 21.53, "securityId": "999998222", "securityIdType": "CUSIP", "symbol": "SEA1", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 284.93, "positionType": "LONG", "purchasedPrice": 0.92, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 422.19 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 59.43, "securityId": "464288455", "securityIdType": "CUSIP", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 17847.06, "positionType": "LONG", "purchasedPrice": 17.09, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 154 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.47, "securityId": "20030N200", "securityIdType": "CUSIP", "units": -85 }, { "averageCost": true, "cashAccount": false, "marketValue": 12442, "positionType": "LONG", "purchasedPrice": 62.26, "securityId": "46429B671", "securityIdType": "CUSIP", "symbol": "MCHI", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3882.15, "positionType": "LONG", "purchasedPrice": 1.35, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 5126 }, { "averageCost": true, "cashAccount": false, "marketValue": 8142.23, "positionType": "LONG", "purchasedPrice": 0.8, "securityId": "CURNZD071", "securityIdType": "CUSIP", "symbol": "NZD", "units": 12482.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.86, "securityId": "218868107", "securityIdType": "CUSIP", "units": 11000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "F47696111", "securityIdType": "CUSIP", "symbol": "HAV:FR", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 57.02, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 400 }, { "averageCost": false, "cashAccount": false, "marketValue": 26604, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 4434 }, { "averageCost": true, "cashAccount": false, "marketValue": 5493, "positionType": "LONG", "purchasedPrice": 3.39, "securityId": "Y1023R104", "securityIdType": "CUSIP", "symbol": "BYDDF", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 606.06, "positionType": "LONG", "purchasedPrice": 17.21, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 74 }, { "averageCost": true, "cashAccount": false, "marketValue": 291257.32, "positionType": "LONG", "purchasedPrice": 141.67, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 898 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.32, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -32810, "positionType": "LONG", "purchasedPrice": 227.2, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 3362.21, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 26132.81 }, { "averageCost": true, "cashAccount": false, "marketValue": 34316, "positionType": "LONG", "purchasedPrice": 100.93, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 100 }, { "averageCost": false, "cashAccount": false, "marketValue": -518672.56, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": -1588 }, { "averageCost": false, "cashAccount": false, "marketValue": 6432934999.99, "positionType": "LONG", "securityId": "Y14965100", "securityIdType": "CUSIP", "symbol": "941:HK", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 11242758, "positionType": "LONG", "purchasedPrice": 53.37, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 6051 }, { "averageCost": true, "cashAccount": false, "marketValue": 17328, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20033AVX1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": 898246, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 5800 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "59101LCK1", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 10, "securityId": "018601104", "securityIdType": "CUSIP", "units": 675 }, { "averageCost": true, "cashAccount": false, "marketValue": -2878.92, "positionType": "LONG", "purchasedPrice": 40.6, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -33 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "010237EL5", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "321089BG8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -3489.6, "positionType": "LONG", "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -40 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.03, "securityId": "371485103", "securityIdType": "CUSIP", "units": 900000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7232, "positionType": "LONG", "purchasedPrice": 18, "securityId": "37950E416", "securityIdType": "CUSIP", "symbol": "SOCL", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 640.34, "positionType": "LONG", "purchasedPrice": 8.17, "securityId": "09228F103", "securityIdType": "CUSIP", "symbol": "BB", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 29.29, "securityId": "18383M100", "securityIdType": "CUSIP", "units": 37 }, { "averageCost": false, "cashAccount": false, "marketValue": 122, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": -24282, "positionType": "LONG", "purchasedPrice": 78.31, "securityId": "674599105", "securityIdType": "CUSIP", "symbol": "OXY", "units": -600 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "06741RDE8", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.28, "securityId": "767754104", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "32026UEK8", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 4.8, "securityId": "35906A108", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "912796LT4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "199098AJ3", "securityIdType": "CUSIP", "units": 150000 }, { "averageCost": false, "cashAccount": false, "marketValue": -2964, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": -494 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 21.69, "securityId": "74347X591", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3973.92, "positionType": "LONG", "purchasedPrice": 92.98, "securityId": "912828S92", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "06048WAH3", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 20617.05, "positionType": "LONG", "purchasedPrice": 20.33, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 889.433 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.62, "securityId": "91388Q202", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3552.01, "positionType": "LONG", "purchasedPrice": 45, "securityId": "78355E361", "securityIdType": "CUSIP", "symbol": "RYBMX", "units": 66.667 }, { "averageCost": true, "cashAccount": false, "marketValue": 10823.41, "positionType": "LONG", "purchasedPrice": 1.33, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 9835 }, { "averageCost": true, "cashAccount": false, "marketValue": -561.6, "positionType": "LONG", "purchasedPrice": 6.54, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": -195 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.4, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1029, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6Q5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3420228, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 64290 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.77, "securityId": "G93882135", "securityIdType": "CUSIP", "units": 14100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1070611.08, "positionType": "LONG", "purchasedPrice": 83.68, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 4796 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNY9", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4710.16, "positionType": "LONG", "purchasedPrice": 26.97, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 364 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.71, "securityId": "852061100", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 8211, "positionType": "LONG", "securityId": "33761N109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.56, "securityId": "013904305", "securityIdType": "CUSIP", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 34924.58, "positionType": "LONG", "purchasedPrice": 16.18, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1058 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 4.82, "securityId": "35906A108", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2234.97, "positionType": "LONG", "purchasedPrice": 19.41, "securityId": "887432409", "securityIdType": "CUSIP", "symbol": "TPLNX", "units": 128.817 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "508176CL6", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": false, "marketValue": -6496, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": -145 }, { "averageCost": true, "cashAccount": false, "marketValue": -19, "positionType": "LONG", "purchasedPrice": 2.97, "securityId": "74979E101", "securityIdType": "CUSIP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 877.72, "positionType": "LONG", "purchasedPrice": 2.28, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 893 }, { "averageCost": true, "cashAccount": false, "marketValue": 211.92, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURZAR112", "securityIdType": "CUSIP", "symbol": "ZAR", "units": 3094.94 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 25.9, "securityId": "268648102", "securityIdType": "CUSIP", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 61732, "positionType": "LONG", "purchasedPrice": 15.39, "securityId": "617446448", "securityIdType": "CUSIP", "symbol": "MS", "units": 1150 }, { "averageCost": true, "cashAccount": false, "marketValue": 60964.16, "positionType": "LONG", "purchasedPrice": 0.12, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 703 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38522AAX4", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 43.68, "securityId": "111320107", "securityIdType": "CUSIP", "units": 899 }, { "averageCost": true, "cashAccount": false, "marketValue": -774.8, "positionType": "LONG", "purchasedPrice": 20.65, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": -20 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PSP2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PSN7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KHV9", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "314172354", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7383.53, "positionType": "LONG", "purchasedPrice": 67.9, "securityId": "H8817H100", "securityIdType": "CUSIP", "symbol": "RIG", "units": 1561 }, { "averageCost": false, "cashAccount": false, "marketValue": 20749.85, "positionType": "LONG", "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 285.143 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHW0", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "02587DY28", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNW3", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 14470.4, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 323 }, { "averageCost": false, "cashAccount": false, "marketValue": -13381.36, "positionType": "LONG", "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": -12159.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "65675QCG2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "06428FCK1", "securityIdType": "CUSIP", "units": -3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 72838.2, "positionType": "LONG", "purchasedPrice": 202.69, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 222 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.3, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 42126, "positionType": "LONG", "purchasedPrice": 17.99, "securityId": "49446R109", "securityIdType": "CUSIP", "symbol": "KIM", "units": 2100 }, { "averageCost": true, "cashAccount": false, "marketValue": 6333.73, "positionType": "LONG", "purchasedPrice": 5.71, "securityId": "36290SYK1", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 141.73, "positionType": "LONG", "purchasedPrice": 106.94, "securityId": "713448108", "securityIdType": "CUSIP", "symbol": "PEP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.89, "securityId": "912828TP5", "securityIdType": "CUSIP", "units": 25000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2555.88, "positionType": "LONG", "purchasedPrice": 5.8, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 361 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 9, "securityId": "070249107", "securityIdType": "CUSIP", "symbol": "BSSP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3525, "positionType": "LONG", "purchasedPrice": 13.12, "securityId": "12811P108", "securityIdType": "CUSIP", "symbol": "CHY", "units": 300 }, { "averageCost": false, "cashAccount": false, "marketValue": 10496.35, "positionType": "LONG", "securityId": "CURNOK085", "securityIdType": "CUSIP", "symbol": "NOK", "units": 96220.13 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 40.05, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 118 }, { "averageCost": true, "cashAccount": false, "marketValue": -510.01, "positionType": "LONG", "purchasedPrice": 10.55, "securityId": "ZZZ965100", "securityIdType": "CUSIP", "symbol": "CTM:DE", "units": -500 }, { "averageCost": true, "cashAccount": false, "marketValue": -23402, "positionType": "LONG", "purchasedPrice": 125.19, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 25111.93, "positionType": "LONG", "purchasedPrice": 0.15, "securityId": "CURSEK127", "securityIdType": "CUSIP", "symbol": "SEK", "units": 241581.93 }, { "averageCost": true, "cashAccount": false, "marketValue": 7608.48, "positionType": "LONG", "purchasedPrice": 21.06, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 303.732 }, { "averageCost": true, "cashAccount": false, "marketValue": 2014.3, "positionType": "LONG", "purchasedPrice": 99.92, "securityId": "912828XW5", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763VB9", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 22.84, "positionType": "LONG", "purchasedPrice": 26.76, "securityId": "464286103", "securityIdType": "CUSIP", "symbol": "EWA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 7755.42, "positionType": "LONG", "purchasedPrice": 35.92, "securityId": "254687106", "securityIdType": "CUSIP", "symbol": "DIS", "units": 57 }, { "averageCost": false, "cashAccount": false, "marketValue": 886, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 6549.35, "positionType": "LONG", "purchasedPrice": 5.93, "securityId": "36290SYJ4", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5111.32, "positionType": "LONG", "purchasedPrice": 73.82, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 53 }, { "averageCost": false, "cashAccount": false, "marketValue": 6505852.5, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 47250 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 19.27, "securityId": "984121103", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "018490102", "securityIdType": "CUSIP", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "59101LCJ4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1039.32, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148P6M4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1566.7, "positionType": "LONG", "purchasedPrice": 1646.4, "securityId": "998997191", "securityIdType": "CUSIP", "symbol": "GB1", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2183.74, "positionType": "LONG", "purchasedPrice": 55.14, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 37 }, { "averageCost": true, "cashAccount": false, "marketValue": 2628.69, "positionType": "LONG", "purchasedPrice": 10.49, "securityId": "31617K881", "securityIdType": "CUSIP", "symbol": "FTBFX", "units": 238.322 }, { "averageCost": false, "cashAccount": false, "marketValue": 70456.89, "positionType": "LONG", "securityId": "30231G102", "securityIdType": "CUSIP", "symbol": "XOM", "units": 1099 }, { "averageCost": true, "cashAccount": false, "marketValue": 5851.96, "positionType": "LONG", "purchasedPrice": 15.51, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 327.474 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.4, "securityId": "912796KF5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.53, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 404 }, { "averageCost": false, "cashAccount": false, "marketValue": 77129.21, "positionType": "LONG", "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 101841.41 }, { "averageCost": false, "cashAccount": false, "marketValue": -197447, "positionType": "LONG", "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -1175 }, { "averageCost": true, "cashAccount": false, "marketValue": 1001.83, "positionType": "LONG", "purchasedPrice": 1, "securityId": "46176PLD5", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1878.15, "positionType": "LONG", "purchasedPrice": 73.55, "securityId": "81369Y407", "securityIdType": "CUSIP", "symbol": "XLY", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 63506.6, "positionType": "LONG", "purchasedPrice": 137.41, "securityId": "92826C839", "securityIdType": "CUSIP", "symbol": "V", "units": 310 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "032511107", "securityIdType": "CUSIP", "units": -600 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "88224PKW8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1086.3, "positionType": "LONG", "purchasedPrice": 5.29, "securityId": "165185109", "securityIdType": "CUSIP", "symbol": "CHKR", "units": 1700 }, { "averageCost": true, "cashAccount": false, "marketValue": 4861, "positionType": "LONG", "purchasedPrice": 72.75, "securityId": "464288869", "securityIdType": "CUSIP", "symbol": "IWC", "units": 50 }, { "averageCost": true, "cashAccount": false, "marketValue": 1000.08, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06428FHY6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 158603, "positionType": "LONG", "purchasedPrice": 1312.87, "securityId": "999998123", "securityIdType": "CUSIP", "symbol": "GEA1", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1009.87, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763ZT6", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 23402, "positionType": "LONG", "purchasedPrice": 127.11, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 27.79, "securityId": "428236103", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "14912L2Y6", "securityIdType": "CUSIP", "units": 36000 }, { "averageCost": true, "cashAccount": false, "marketValue": 73046.3, "positionType": "LONG", "purchasedPrice": 45.54, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 1129 }, { "averageCost": true, "cashAccount": false, "marketValue": 1388.1, "positionType": "LONG", "purchasedPrice": 26.06, "securityId": "06828M702", "securityIdType": "CUSIP", "symbol": "BREFX", "units": 51.989 }, { "averageCost": true, "cashAccount": false, "marketValue": 163492.14, "positionType": "LONG", "purchasedPrice": 44.11, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": 1218 }, { "averageCost": true, "cashAccount": false, "marketValue": 9733.37, "positionType": "LONG", "purchasedPrice": 77.5, "securityId": "78355Y508", "securityIdType": "CUSIP", "symbol": "RYTTX", "units": 64.515 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "066519DT3", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 37570, "positionType": "LONG", "purchasedPrice": 82.37, "securityId": "26875P101", "securityIdType": "CUSIP", "symbol": "EOG", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 1005.74, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763ZS8", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 21777.53, "positionType": "LONG", "purchasedPrice": 17.77, "securityId": "783554769", "securityIdType": "CUSIP", "symbol": "RYEAX", "units": 430.386 }, { "averageCost": true, "cashAccount": false, "marketValue": 180180, "positionType": "LONG", "purchasedPrice": 137.92, "securityId": "998997209", "securityIdType": "CUSIP", "symbol": "GEAT", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 15116.4, "positionType": "LONG", "purchasedPrice": 1.23, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 408 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "46176PKA2", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 13129.54, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURMXN065", "securityIdType": "CUSIP", "symbol": "MXN", "units": 245457.94 }, { "averageCost": false, "cashAccount": false, "marketValue": 507547.04, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 3169 }, { "averageCost": true, "cashAccount": false, "marketValue": 786.24, "positionType": "LONG", "purchasedPrice": 38.86, "securityId": "464287374", "securityIdType": "CUSIP", "symbol": "IGE", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38148PNU7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 707.66, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 159 }, { "averageCost": true, "cashAccount": false, "marketValue": 3990, "positionType": "LONG", "purchasedPrice": 93.44, "securityId": "9128282D1", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 16267.72, "positionType": "LONG", "purchasedPrice": 224.69, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 5132.65, "positionType": "LONG", "purchasedPrice": 21.03, "securityId": "783554348", "securityIdType": "CUSIP", "symbol": "RYACX", "units": 142.653 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "75524KLM4", "securityIdType": "CUSIP", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2108.51, "positionType": "LONG", "purchasedPrice": 9.66, "securityId": "921659108", "securityIdType": "CUSIP", "symbol": "VNDA", "units": 157 }, { "averageCost": true, "cashAccount": false, "marketValue": 382.65, "positionType": "LONG", "purchasedPrice": 152.27, "securityId": "666807102", "securityIdType": "CUSIP", "symbol": "NOC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 60.94, "positionType": "LONG", "purchasedPrice": 88.31, "securityId": "98156Q108", "securityIdType": "CUSIP", "symbol": "WWE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 43.71, "securityId": "19761R307", "securityIdType": "CUSIP", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.02, "positionType": "LONG", "purchasedPrice": 38279.16, "securityId": "G93882192", "securityIdType": "CUSIP", "symbol": "VOD:GB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 14833, "positionType": "LONG", "purchasedPrice": 35.03, "securityId": "49456B101", "securityIdType": "CUSIP", "symbol": "KMI", "units": 700 }, { "averageCost": true, "cashAccount": false, "marketValue": 62799.89, "positionType": "LONG", "purchasedPrice": 1.07, "securityId": "CURCHF138", "securityIdType": "CUSIP", "symbol": "CHF", "units": 61154.54 }, { "averageCost": true, "cashAccount": false, "marketValue": 105567, "positionType": "LONG", "purchasedPrice": 18.9, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20033AWJ1", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 91.57, "positionType": "LONG", "purchasedPrice": 254.44, "securityId": "78464A870", "securityIdType": "CUSIP", "symbol": "XBI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 44081.5, "positionType": "LONG", "purchasedPrice": 47.7, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 500.244 }, { "averageCost": true, "cashAccount": false, "marketValue": 1440, "positionType": "LONG", "purchasedPrice": 8.36, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 24978.5, "positionType": "LONG", "purchasedPrice": 98.19, "securityId": "912828UV0", "securityIdType": "CUSIP", "units": 25000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "3133ECFV1", "securityIdType": "CUSIP", "units": 37000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8904.84, "positionType": "LONG", "purchasedPrice": 100.78, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 42 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "062683BK2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.63, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 167 }, { "averageCost": true, "cashAccount": false, "marketValue": 7211.2, "positionType": "LONG", "purchasedPrice": 166.86, "securityId": "315912808", "securityIdType": "CUSIP", "symbol": "ONEQ", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 10.1, "positionType": "LONG", "purchasedPrice": 102.41, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 0.713 }, { "averageCost": true, "cashAccount": false, "marketValue": 3658.06, "positionType": "LONG", "purchasedPrice": 38.31, "securityId": "92646A286", "securityIdType": "CUSIP", "symbol": "MNNCX", "units": 112.452 }, { "averageCost": true, "cashAccount": false, "marketValue": 1437.47, "positionType": "LONG", "purchasedPrice": 187.2, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 66.488 }, { "averageCost": true, "cashAccount": false, "marketValue": -580990, "positionType": "LONG", "purchasedPrice": 30.27, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2942.49, "positionType": "LONG", "purchasedPrice": 15.09, "securityId": "487836108", "securityIdType": "CUSIP", "symbol": "K", "units": 43 }, { "averageCost": true, "cashAccount": false, "marketValue": 22162.19, "positionType": "LONG", "purchasedPrice": 11.41, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 1879.745 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "80280JRJ2", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -97356, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -1830 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "17417QEG4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 106067, "positionType": "LONG", "purchasedPrice": 32.05, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 1300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06251AS92", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 501, "positionType": "LONG", "purchasedPrice": 20.05, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 1213.4, "positionType": "LONG", "purchasedPrice": 60.15, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 301120, "positionType": "LONG", "purchasedPrice": 7.85, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 6400 } ], "marginBalance": 97773885.3, "nickname": "House Fund", "transactions": [ { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $250.12 PENDING REINVESTMENT", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "BBY", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $0.40 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $1.20 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "IA", "description": " DIV OF $120.00 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "408585220", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.64, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1260008099", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.08, "description": "INTEREST ", "securityId": "949763ZT6", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1463980358", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.04, "description": "INTEREST ", "securityId": "949763ZS8", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1463980357", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -17745.7, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765316 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1463980329", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -129208.07, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1463980328", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": 129208.07, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1463980292", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "892195915", "amount": -439.2, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "128419223", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 15429.6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "128419224", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2240, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "802091672", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -5.94, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "802091673", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -54607.16, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 15,602,046DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "316245817", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 10.73, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411848", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 9.72, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411847", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.43, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "12811L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHW", "transactionId": "1841411846", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.59, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411844", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.44, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHI", "transactionId": "1841411843", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 9.84, "category": "IA", "description": "RETURN OF CAPITAL ", "securityId": "128117108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "symbol": "CHI", "transactionId": "1841411842", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3.21, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411841", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 4.86, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHY", "transactionId": "1841411840", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 7.71, "category": "IA", "description": "RETURN OF CAPITAL ", "securityId": "12811P108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "symbol": "CHY", "transactionId": "1841411839", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 18.57, "category": "IA", "description": "SHORT-TERM CAP GAIN ", "securityId": "12811L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CHW", "transactionId": "1841411817", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1253.35, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765077 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1841411816", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -63923.24, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1841411814", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 63923.24, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1841411779", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 50.16, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254687106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIS", "transactionId": "1335217929", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 445.89, "description": "INTEREST ", "securityId": "909557HC7", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1335217930", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "892195915", "amount": -474, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "674599105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "OXY", "transactionId": "2008890357", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 588, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "49446R109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "KIM", "transactionId": "2008890358", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "2008890380", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 24.46, "description": "INTEREST ", "securityId": "36290SYK1", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "2008890382", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 184.85, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYK1", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "2008890383", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 24.62, "description": "INTEREST ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "2008890384", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 27.35, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "2008890385", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-089699-1 ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "GRPN", "transactionId": "462571218", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-089699-2 ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": -300, "status": "POSTED", "subCategory": "SL", "symbol": "GRPN", "transactionId": "462571217", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 320.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "462571188", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -320.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "462571187", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "806857108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SLB", "transactionId": "1632932015", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 113.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "29476L107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "EQR", "transactionId": "1632932016", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 3304.41, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932046", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -3304.41, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932047", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -75415.86, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932049", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 75415.86, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1632932084", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.18, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "844741108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "LUV", "transactionId": "844267554", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.96, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "713448108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "PEP", "transactionId": "78666490", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 445.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1773845380", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1186.61, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417864", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1186.61, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417863", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": -62551.88, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417861", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 62551.88, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "929417826", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "892195915", "amount": 1557.38, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "2030312681", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -4.68, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "2030312680", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": 4.68, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312654", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -4.68, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312653", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1191.29, "category": "ZZ", "description": "JOURNALED PRECIOUS METALS STORAGE CHARGE ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2030312652", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "892195915", "amount": -0.02, "category": "DV", "description": "DIVIDEND ADJUSTMENT DIVIDEND RECEIVED ", "securityId": "315910836", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FNMIX", "transactionId": "277317660", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 5.62, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "277317682", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 17.5, "description": "INTEREST ", "securityId": "912828XW5", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "277317683", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 2.04, "description": "INTEREST ", "securityId": "15135KBM2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "277317684", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 0.02, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317713", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -0.02, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317714", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -49500.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317716", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": 49500.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "277317750", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "892195915", "amount": -1161.58, "category": "ZZ", "description": "JOURNALED PRECIOUS METALS STORAGE CHARGE ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1551929400", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "212512418", "accountNumber": "*****4512", "accountType": "IRAB", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "IRA - BDA", "nickname": "IRA - BDA" }, { "accountId": "868876526", "accountNumber": "*****3826", "accountType": "TIC", "availableCashBalance": 12339.61, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 12339.61, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 12339.61, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 12339.61 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "868876526", "amount": -0.52, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.52, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "996008300", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "868876526", "amount": 0.52, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "996008299", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1703786627", "accountNumber": "*****8180", "accountType": "TODJ", "availableCashBalance": 919622.84, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 923895.89, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 324.34, "positionType": "LONG", "purchasedPrice": 174.97, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 34.1, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 3716, "positionType": "LONG", "purchasedPrice": 1727.67, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 2 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99375" } ], "marketValue": 245000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 245000 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99482" } ], "marketValue": 188311.34, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 188311.34 }, { "averageCost": true, "cashAccount": false, "marketValue": 137.69, "positionType": "LONG", "purchasedPrice": 130.19, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 1 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 241311.5, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 241311.5 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99466" } ], "marketValue": 245000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 245000 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "1703786627", "amount": -39.07, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 39.07, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "577551812", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1703786627", "amount": 8, "category": "DV", "description": "CREDIT INTEREST AT PEOPLES BANK NOT COVERED BY SIPC ", "securityId": "FDIC99482", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPEOQ", "transactionId": "577551811", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.41, "category": "DV", "description": "CREDIT INTEREST GOLDMAN SACHS BANK NOT COVERED BY SIPC ", "securityId": "FDIC99466", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QGSBQ", "transactionId": "577551810", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.41, "category": "DV", "description": "CREDIT INTEREST AT CITIBANK NOT COVERED BY SIPC ", "securityId": "FDIC99375", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPCTQ", "transactionId": "577551809", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1703786627", "amount": 10.25, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "577551808", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1058497228", "accountNumber": "*****1569", "accountType": "I", "availableCashBalance": 152738.09, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 153354.38, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 296.4, "positionType": "LONG", "purchasedPrice": 1.19, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 319.89, "positionType": "LONG", "purchasedPrice": 0.74, "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 3 }, { "averageCost": false, "cashAccount": true, "marketValue": 152738.09, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 152738.09 } ], "nickname": "Individual", "transactions": [ { "accountId": "1058497228", "amount": -171.89, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 171.89, "status": "POSTED", "subCategory": "BY", "symbol": "FDRXX", "transactionId": "220477490", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1058497228", "amount": 171.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FDRXX", "transactionId": "220477489", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1267662784", "accountNumber": "*****6789", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1157850082", "accountNumber": "*****5045", "accountType": "IRRL", "availableCashBalance": 59732.82, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 194645.91, "displayName": "Rollover IRA", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99367" } ], "marketValue": 5000, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 111.6, "positionType": "LONG", "purchasedPrice": 12.16, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 12.94, "positionType": "LONG", "purchasedPrice": 39.32, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 15798, "positionType": "LONG", "purchasedPrice": 111.51, "securityId": "803054204", "securityIdType": "CUSIP", "symbol": "SAP", "units": 120 }, { "averageCost": true, "cashAccount": false, "marketValue": 22323, "positionType": "LONG", "purchasedPrice": 178.86, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 2009.22, "positionType": "LONG", "purchasedPrice": 100.37, "securityId": "912828B90", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 548.17, "positionType": "LONG", "purchasedPrice": 97.14, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 51.472 }, { "averageCost": true, "cashAccount": false, "marketValue": 1845.95, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "Y1100L160", "securityIdType": "CUSIP", "symbol": "CPAMF", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 44.3, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.64, "positionType": "LONG", "purchasedPrice": 105.8, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 47.258 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20451PAW6", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 3280.79, "positionType": "LONG", "purchasedPrice": 10.54, "securityId": "886315712", "securityIdType": "CUSIP", "symbol": "TIORX", "units": 299.07 }, { "averageCost": true, "cashAccount": false, "marketValue": 199.4, "positionType": "LONG", "purchasedPrice": 20.71, "securityId": "477143101", "securityIdType": "CUSIP", "symbol": "JBLU", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2545.33, "positionType": "LONG", "purchasedPrice": 11.58, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 215.889 }, { "averageCost": true, "cashAccount": false, "marketValue": 3579.94, "positionType": "LONG", "purchasedPrice": 181.4, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 26 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.08, "positionType": "LONG", "purchasedPrice": 12.73, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "05275N205", "securityIdType": "CUSIP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1.6, "positionType": "LONG", "purchasedPrice": 14.62, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.8, "securityId": "94975DAB1", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 22727.67, "positionType": "LONG", "purchasedPrice": 59.96, "securityId": "31617K287", "securityIdType": "CUSIP", "symbol": "FIRRX", "units": 416.945 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99490" } ], "marketValue": 54732.82, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 54732.82 }, { "averageCost": true, "cashAccount": false, "marketValue": 46942.18, "positionType": "LONG", "purchasedPrice": 26.98, "securityId": "316145101", "securityIdType": "CUSIP", "symbol": "FEQTX", "units": 1853.225 }, { "averageCost": true, "cashAccount": false, "marketValue": 76.48, "positionType": "LONG", "purchasedPrice": 69.31, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5658, "positionType": "LONG", "purchasedPrice": 221.82, "securityId": "91324P102", "securityIdType": "CUSIP", "symbol": "UNH", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 6486.8, "positionType": "LONG", "purchasedPrice": 134.76, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 20 } ], "nickname": "ROLLOVER IRA", "transactions": [ { "accountId": "1157850082", "amount": -0.01, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 0.01, "status": "POSTED", "subCategory": "BY", "symbol": "QPUBQ", "transactionId": "972051701", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1157850082", "amount": 0.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "972051702", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1157850082", "amount": -5.07, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 5.07, "status": "POSTED", "subCategory": "BY", "symbol": "QPUBQ", "transactionId": "751693667", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1157850082", "amount": 4.65, "category": "DV", "description": "CREDIT INTEREST PEOPLES BANK IRA NOT COVERED BY SIPC ", "securityId": "FDIC99490", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPUBQ", "transactionId": "751693668", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1157850082", "amount": 0.42, "category": "DV", "description": "CREDIT INTEREST AT CITIBANK IRA NOT COVERED BY SIPC ", "securityId": "FDIC99367", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPCBQ", "transactionId": "751693669", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1857010597", "accountNumber": "*****5068", "accountType": "I", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Individual", "nickname": "Individual" }, { "accountId": "668076213", "accountNumber": "*****2036", "accountType": "ROTH", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "ROTH IRA", "nickname": "ROTH IRA" }, { "accountId": "1267662877", "accountNumber": "*****6786", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1881890174", "accountNumber": "*****9220", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 195554.8, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 110570.4, "positionType": "LONG", "purchasedPrice": 99, "securityId": "082887PE4", "securityIdType": "CUSIP", "units": 90000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5147.65, "positionType": "LONG", "purchasedPrice": 100, "securityId": "9128282Y5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10343.11, "positionType": "LONG", "purchasedPrice": 0.74, "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 97 }, { "averageCost": true, "cashAccount": false, "marketValue": 4469.08, "positionType": "LONG", "purchasedPrice": 95, "securityId": "79875YCP4", "securityIdType": "CUSIP", "units": 3500 }, { "averageCost": true, "cashAccount": false, "marketValue": 136.06, "positionType": "LONG", "purchasedPrice": 118.21, "securityId": "254687106", "securityIdType": "CUSIP", "symbol": "DIS", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 8.86, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 275.38, "positionType": "LONG", "purchasedPrice": 160.34, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 17.1, "positionType": "LONG", "purchasedPrice": 4.31, "securityId": "92912L107", "securityIdType": "CUSIP", "symbol": "VJET", "units": 9 }, { "averageCost": true, "cashAccount": false, "marketValue": 63289.8, "positionType": "LONG", "purchasedPrice": 91.5, "securityId": "050589HT0", "securityIdType": "CUSIP", "units": 60000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.67, "securityId": "1008524D1", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 1297.36, "positionType": "LONG", "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 4 } ], "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "1881890174", "amount": 0.88, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254687106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIS", "transactionId": "707741860", "transactionTimestamp": 1579150800, "unitPrice": 0 } ] }, { "accountId": "360171549", "accountNumber": "*****1184", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1729634.12, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1148609.98, "positionType": "LONG", "purchasedPrice": 1.36, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 8342 }, { "averageCost": true, "cashAccount": false, "marketValue": 36.66, "positionType": "LONG", "purchasedPrice": 42.43, "securityId": "464289883", "securityIdType": "CUSIP", "symbol": "AOK", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 50, "positionType": "LONG", "purchasedPrice": 90.52, "securityId": "783549108", "securityIdType": "CUSIP", "symbol": "R", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 57.68, "positionType": "LONG", "purchasedPrice": 65.49, "securityId": "46435G326", "securityIdType": "CUSIP", "symbol": "IDEV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 73.58, "positionType": "LONG", "purchasedPrice": 103.54, "securityId": "92204A306", "securityIdType": "CUSIP", "symbol": "VDE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 75.01, "positionType": "LONG", "purchasedPrice": 78.5, "securityId": "92204A405", "securityIdType": "CUSIP", "symbol": "VFH", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 37.08, "securityId": "29273R109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 150.3, "positionType": "LONG", "purchasedPrice": 129.4, "securityId": "922908637", "securityIdType": "CUSIP", "symbol": "VV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4254.3, "positionType": "LONG", "purchasedPrice": 49.92, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 90 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.03, "positionType": "LONG", "purchasedPrice": 25.19, "securityId": "225401108", "securityIdType": "CUSIP", "symbol": "CS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 19120, "positionType": "LONG", "purchasedPrice": 70.57, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 250 }, { "averageCost": true, "cashAccount": false, "marketValue": 40.44, "positionType": "LONG", "purchasedPrice": 46.44, "securityId": "464289875", "securityIdType": "CUSIP", "symbol": "AOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 64.7, "positionType": "LONG", "purchasedPrice": 29.17, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 67.08, "positionType": "LONG", "purchasedPrice": 72.04, "securityId": "92206C706", "securityIdType": "CUSIP", "symbol": "VGIT", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 160.16, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4861.32, "positionType": "LONG", "purchasedPrice": 94.31, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 66.804 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.69, "positionType": "LONG", "purchasedPrice": 142.24, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 41.41, "securityId": "12673P105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 57.87, "positionType": "LONG", "purchasedPrice": 67.28, "securityId": "46434V696", "securityIdType": "CUSIP", "symbol": "IPAC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 797.37, "positionType": "LONG", "purchasedPrice": 593.03, "securityId": "017175100", "securityIdType": "CUSIP", "symbol": "Y", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 155.75, "positionType": "LONG", "purchasedPrice": 99.02, "securityId": "256677105", "securityIdType": "CUSIP", "symbol": "DG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 20.24, "positionType": "LONG", "purchasedPrice": 22.9, "securityId": "49926D109", "securityIdType": "CUSIP", "symbol": "KN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 27.29, "positionType": "LONG", "purchasedPrice": 50.48, "securityId": "419879101", "securityIdType": "CUSIP", "symbol": "HA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 124.83, "positionType": "LONG", "purchasedPrice": 10.59, "securityId": "74348T102", "securityIdType": "CUSIP", "symbol": "PSEC", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 86.72, "positionType": "LONG", "purchasedPrice": 69.65, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 156.32, "positionType": "LONG", "purchasedPrice": 148.13, "securityId": "92204A603", "securityIdType": "CUSIP", "symbol": "VIS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 840.2, "positionType": "LONG", "purchasedPrice": 10.95, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 336476.01, "positionType": "LONG", "purchasedPrice": 302801.45, "securityId": "084670108", "securityIdType": "CUSIP", "symbol": "BRKA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.05, "positionType": "LONG", "purchasedPrice": 16.68, "securityId": "16944W104", "securityIdType": "CUSIP", "symbol": "DL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1701.15, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 88.23, "positionType": "LONG", "purchasedPrice": 72.53, "securityId": "747525103", "securityIdType": "CUSIP", "symbol": "QCOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.44, "positionType": "LONG", "purchasedPrice": 96.41, "securityId": "209115104", "securityIdType": "CUSIP", "symbol": "ED", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 88.96, "positionType": "LONG", "purchasedPrice": 92, "securityId": "921937819", "securityIdType": "CUSIP", "symbol": "BIV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 11.7, "positionType": "LONG", "purchasedPrice": 30.9, "securityId": "60649T107", "securityIdType": "CUSIP", "symbol": "MG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.09, "positionType": "LONG", "purchasedPrice": 61.83, "securityId": "922042775", "securityIdType": "CUSIP", "symbol": "VEU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 322.02, "positionType": "LONG", "purchasedPrice": 287.34, "securityId": "097023105", "securityIdType": "CUSIP", "symbol": "BA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 287.29, "positionType": "LONG", "purchasedPrice": 251.86, "securityId": "78467X109", "securityIdType": "CUSIP", "symbol": "DIA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.01, "positionType": "LONG", "purchasedPrice": 8.38, "securityId": "09173Y107", "securityIdType": "CUSIP", "symbol": "BTSC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 190.99, "positionType": "LONG", "purchasedPrice": 163.06, "securityId": "92204A108", "securityIdType": "CUSIP", "symbol": "VCR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 86.54, "positionType": "LONG", "purchasedPrice": 92.13, "securityId": "224399105", "securityIdType": "CUSIP", "symbol": "CR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53546.4, "positionType": "LONG", "purchasedPrice": 40, "securityId": "902973304", "securityIdType": "CUSIP", "symbol": "USB", "units": 999 }, { "averageCost": true, "cashAccount": false, "marketValue": 3143, "positionType": "LONG", "purchasedPrice": 203.44, "securityId": "084670702", "securityIdType": "CUSIP", "symbol": "BRKB", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 40.26, "securityId": "12674R100", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 11053.45, "positionType": "LONG", "purchasedPrice": 13.17, "securityId": "316089507", "securityIdType": "CUSIP", "symbol": "FHIGX", "units": 812.157 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 18.97, "securityId": "G21107100", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 52.9, "positionType": "LONG", "purchasedPrice": 58.77, "securityId": "46434V613", "securityIdType": "CUSIP", "symbol": "IUSB", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 945.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 31 }, { "averageCost": true, "cashAccount": false, "marketValue": 275.8, "positionType": "LONG", "purchasedPrice": 19.69, "securityId": "48242W106", "securityIdType": "CUSIP", "symbol": "KBR", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.36, "positionType": "LONG", "purchasedPrice": 52.19, "securityId": "922042858", "securityIdType": "CUSIP", "symbol": "VWO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 160.64, "positionType": "LONG", "purchasedPrice": 153.53, "securityId": "92204A207", "securityIdType": "CUSIP", "symbol": "VDC", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "38259P706", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2169.96, "positionType": "LONG", "purchasedPrice": 33.72, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 153.138 }, { "averageCost": true, "cashAccount": false, "marketValue": 62.17, "positionType": "LONG", "purchasedPrice": 63.15, "securityId": "464287663", "securityIdType": "CUSIP", "symbol": "IUSV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 950, "positionType": "LONG", "purchasedPrice": 3.54, "securityId": "92912L107", "securityIdType": "CUSIP", "symbol": "VJET", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 44.47, "positionType": "LONG", "purchasedPrice": 40.13, "securityId": "G3922B107", "securityIdType": "CUSIP", "symbol": "G", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 142.4, "positionType": "LONG", "purchasedPrice": 64.26, "securityId": "464289479", "securityIdType": "CUSIP", "symbol": "ILTB", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 115.42, "positionType": "LONG", "purchasedPrice": 66.27, "securityId": "922042874", "securityIdType": "CUSIP", "symbol": "VGK", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 715.08, "positionType": "LONG", "purchasedPrice": 7.14, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.18, "positionType": "LONG", "purchasedPrice": 19.86, "securityId": "242370203", "securityIdType": "CUSIP", "symbol": "DFODQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 73.71, "positionType": "LONG", "purchasedPrice": 60.74, "securityId": "464287150", "securityIdType": "CUSIP", "symbol": "ITOT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4865.1, "positionType": "LONG", "purchasedPrice": 149.35, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 40.27, "positionType": "LONG", "purchasedPrice": 44.9, "securityId": "125269100", "securityIdType": "CUSIP", "symbol": "CF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1116, "positionType": "LONG", "purchasedPrice": 11.44, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 100 }, { "averageCost": false, "cashAccount": false, "marketValue": 653.24, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 68.83, "positionType": "LONG", "purchasedPrice": 82.4, "securityId": "194162103", "securityIdType": "CUSIP", "symbol": "CL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4964.33, "positionType": "LONG", "purchasedPrice": 25.23, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 198.177 }, { "averageCost": true, "cashAccount": false, "marketValue": 191.93, "positionType": "LONG", "purchasedPrice": 161.27, "securityId": "92204A504", "securityIdType": "CUSIP", "symbol": "VHT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 111.93, "positionType": "LONG", "purchasedPrice": 114.79, "securityId": "150870103", "securityIdType": "CUSIP", "symbol": "CE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 602.93, "positionType": "LONG", "purchasedPrice": 189.59, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 27.888 }, { "averageCost": true, "cashAccount": false, "marketValue": 204.32, "positionType": "LONG", "purchasedPrice": 189.64, "securityId": "464287507", "securityIdType": "CUSIP", "symbol": "IJH", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 49.08, "positionType": "LONG", "purchasedPrice": 50.48, "securityId": "53567X101", "securityIdType": "CUSIP", "symbol": "LN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 64.51, "positionType": "LONG", "purchasedPrice": 65.46, "securityId": "46432F842", "securityIdType": "CUSIP", "symbol": "IEFA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 45.95, "positionType": "LONG", "purchasedPrice": 49, "securityId": "808513105", "securityIdType": "CUSIP", "symbol": "SCHW", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.28, "positionType": "LONG", "purchasedPrice": 55.3, "securityId": "23703Q203", "securityIdType": "CUSIP", "symbol": "DQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 109.13, "positionType": "LONG", "purchasedPrice": 124.57, "securityId": "922042718", "securityIdType": "CUSIP", "symbol": "VSS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 141.84, "positionType": "LONG", "purchasedPrice": 129.12, "securityId": "921910709", "securityIdType": "CUSIP", "symbol": "EDV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 13.38, "positionType": "LONG", "purchasedPrice": 25.53, "securityId": "427825500", "securityIdType": "CUSIP", "symbol": "HT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 92.9, "positionType": "LONG", "purchasedPrice": 95.34, "securityId": "92206C870", "securityIdType": "CUSIP", "symbol": "VCIT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "38522AAX4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.4, "positionType": "LONG", "purchasedPrice": 12.87, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 72.03, "positionType": "LONG", "purchasedPrice": 73.31, "securityId": "921946810", "securityIdType": "CUSIP", "symbol": "VIGI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 127.18, "positionType": "LONG", "purchasedPrice": 119.26, "securityId": "922908652", "securityIdType": "CUSIP", "symbol": "VXF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.99, "positionType": "LONG", "purchasedPrice": 97.79, "securityId": "46429B663", "securityIdType": "CUSIP", "symbol": "HDV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 82.74, "positionType": "LONG", "purchasedPrice": 102.77, "securityId": "136069101", "securityIdType": "CUSIP", "symbol": "CM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2434.86, "positionType": "LONG", "purchasedPrice": 2.52, "securityId": "04878Q863", "securityIdType": "CUSIP", "symbol": "AT", "units": 1002 }, { "averageCost": true, "cashAccount": false, "marketValue": 112.21, "positionType": "LONG", "purchasedPrice": 109.05, "securityId": "285512109", "securityIdType": "CUSIP", "symbol": "EA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 119412.15, "positionType": "LONG", "purchasedPrice": 1.12, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 3223 }, { "averageCost": true, "cashAccount": false, "marketValue": 3.4, "positionType": "LONG", "purchasedPrice": 12.5, "securityId": "381370105", "securityIdType": "CUSIP", "symbol": "GV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 263.98, "positionType": "LONG", "purchasedPrice": 184.4, "securityId": "13645T100", "securityIdType": "CUSIP", "symbol": "CP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.94, "positionType": "LONG", "purchasedPrice": 35.95, "securityId": "629337106", "securityIdType": "CUSIP", "symbol": "NNBR", "units": 1 } ], "marginBalance": 1729634.11, "nickname": "INDIVIDUAL", "transactions": [ { "accountId": "360171549", "amount": 0.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1623188241", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "360171549", "amount": 1.14, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74348T102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "PSEC", "transactionId": "1283351706", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.32, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "256677105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DG", "transactionId": "1728016774", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "360171549", "amount": -1353.32, "category": "IA", "description": "MARGIN INTEREST @ 8.825% AVG BAL 262,886DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1728016772", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "360171549", "amount": 419.58, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "902973304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "USB", "transactionId": "597119453", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "48242W106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "KBR", "transactionId": "597119454", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.28, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "427825500", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HT", "transactionId": "597119455", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 9.46, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "597119456", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.87, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "78467X109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIA", "transactionId": "1874342145", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.17, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464289883", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AOK", "transactionId": "537909984", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464289875", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AOM", "transactionId": "537909983", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": -25.28, "category": "DV", "description": "REINVESTMENT REINVEST @ $13.400", "securityId": "316089507", "securityIdType": "CUSIP", "shares": 1.887, "status": "POSTED", "subCategory": "RN", "symbol": "FHIGX", "transactionId": "537909982", "transactionTimestamp": 1577768400, "unitPrice": 13.4 }, { "accountId": "360171549", "amount": 25.28, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316089507", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FHIGX", "transactionId": "537909981", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.66, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908652", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VXF", "transactionId": "736701704", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "360171549", "amount": 0.77, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908637", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VV", "transactionId": "736701705", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1747769917", "accountNumber": "*****3817", "accountType": "TODI", "availableCashBalance": 151501.71, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 2816339.99, "displayName": "Individual - TOD", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.22, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 102 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 41.2, "securityId": "966244105", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.17, "securityId": "754055101", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": 2714.5, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 89 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.05, "securityId": "627335102", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": false, "cashAccount": true, "marketValue": 151501.71, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 151501.71 }, { "averageCost": true, "cashAccount": false, "marketValue": 496.41, "positionType": "LONG", "purchasedPrice": 103.76, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 22.961 }, { "averageCost": true, "cashAccount": false, "marketValue": 18163.04, "positionType": "LONG", "purchasedPrice": 116.66, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 56 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.22, "positionType": "LONG", "purchasedPrice": 0.58, "securityId": "58463A105", "securityIdType": "CUSIP", "symbol": "MJNA", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": 5130.9, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 90 }, { "averageCost": true, "cashAccount": false, "marketValue": 78377.76, "positionType": "LONG", "purchasedPrice": 54.21, "securityId": "063671101", "securityIdType": "CUSIP", "symbol": "BMO:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 306.7, "positionType": "LONG", "purchasedPrice": 1.05, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 278.7 }, { "averageCost": true, "cashAccount": false, "marketValue": 116249.6, "positionType": "LONG", "purchasedPrice": 72.41, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 1520 }, { "averageCost": true, "cashAccount": false, "marketValue": 1529.52, "positionType": "LONG", "purchasedPrice": 190.32, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 2904.95, "positionType": "LONG", "purchasedPrice": 272.72, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.4, "positionType": "LONG", "purchasedPrice": 2.78, "securityId": "282644202", "securityIdType": "CUSIP", "symbol": "EKSO", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 2176878.9, "positionType": "LONG", "purchasedPrice": 0.02, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 15810 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.76, "positionType": "LONG", "purchasedPrice": 45.96, "securityId": "31634R109", "securityIdType": "CUSIP", "symbol": "FFNOX", "units": 0.683 }, { "averageCost": true, "cashAccount": false, "marketValue": 5394.8, "positionType": "LONG", "purchasedPrice": 100, "securityId": "073059PP6", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 46.63, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 21341.08, "positionType": "LONG", "purchasedPrice": 111.82, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 127 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 36.15, "securityId": "29273R109", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 8.8, "positionType": "LONG", "purchasedPrice": 0.62, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 1342.3, "positionType": "LONG", "purchasedPrice": 103.61, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "98411L100", "securityIdType": "CUSIP", "units": 100000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1254.38, "positionType": "LONG", "purchasedPrice": 18.09, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 38 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.45, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 47.51, "positionType": "LONG", "purchasedPrice": 33.01, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5506.25, "positionType": "LONG", "purchasedPrice": 100, "securityId": "073059PM3", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": 21326, "positionType": "LONG", "securityId": "988498101", "securityIdType": "CUSIP", "symbol": "YUM", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3910, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1167.2, "positionType": "LONG", "purchasedPrice": 198.87, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1903.55, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 32.52, "securityId": "33767E103", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "87336U105", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 901.96, "positionType": "LONG", "purchasedPrice": 11.5, "securityId": "31617K105", "securityIdType": "CUSIP", "symbol": "FGMNX", "units": 77.957 }, { "averageCost": true, "cashAccount": false, "marketValue": 129, "positionType": "LONG", "purchasedPrice": 89.56, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 11.05, "securityId": "36290SZB0", "securityIdType": "CUSIP", "units": 200000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 798.15, "securityId": "741503403", "securityIdType": "CUSIP", "units": 378 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 885.31, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 31.66, "securityId": "268648102", "securityIdType": "CUSIP", "units": 1400 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 585.33, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 443.62, "positionType": "LONG", "purchasedPrice": 191.73, "securityId": "46090E103", "securityIdType": "CUSIP", "symbol": "QQQ", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 0.43, "securityId": "74019L107", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1578.68, "positionType": "LONG", "purchasedPrice": 26.39, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 122 }, { "averageCost": true, "cashAccount": false, "marketValue": 5566.95, "positionType": "LONG", "purchasedPrice": 5.9, "securityId": "36290SYJ4", "securityIdType": "CUSIP", "units": 85000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2592, "positionType": "LONG", "purchasedPrice": 16.29, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 900 }, { "averageCost": true, "cashAccount": false, "marketValue": 771.52, "positionType": "LONG", "purchasedPrice": 126.92, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 135.82, "positionType": "LONG", "purchasedPrice": 17.84, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 7.601 }, { "averageCost": true, "cashAccount": false, "marketValue": 179655.45, "positionType": "LONG", "purchasedPrice": 1.19, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 4849 }, { "averageCost": true, "cashAccount": false, "marketValue": 2003.79, "positionType": "LONG", "purchasedPrice": 99.87, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 27.536 }, { "averageCost": false, "cashAccount": false, "marketValue": 1633.1, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 3760, "positionType": "LONG", "purchasedPrice": 6.41, "securityId": "292505104", "securityIdType": "CUSIP", "symbol": "ECA:CA", "units": 1000 } ], "nickname": "TestAccount", "transactions": [ { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $0.50 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $1.50 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0, "category": "IA", "description": " DIV OF $0.30 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "157854324", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 1.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "872611846", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -48.08, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765083 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "1454015563", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -839.09, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 839.09, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1898680635", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1747769917", "amount": 27.15, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "1898680634", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 20.93, "description": "INTEREST ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1898680633", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 23.24, "category": "IA", "description": "PRINCIPAL PAYMENT ", "securityId": "36290SYJ4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "PM", "transactionId": "1898680632", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -169.61, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 169.61, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "75174937", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1747769917", "amount": 815.85, "category": "IA", "description": "YOU SOLD ", "securityId": "459200101", "securityIdType": "CUSIP", "shares": -6, "status": "POSTED", "subCategory": "SL", "symbol": "IBM", "transactionId": "75174936", "transactionTimestamp": 1578891600, "unitPrice": 135.978 }, { "accountId": "1747769917", "amount": 169.61, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2020328299", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": -169.61, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2020328300", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0.92, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "46090E103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "QQQ", "transactionId": "598301443", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 161, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "598301442", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769917", "amount": 0.85, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "598301441", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1177379104", "accountNumber": "*****7428", "accountType": "IRRL", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Rollover IRA", "nickname": "Rollover IRA" }, { "accountId": "1704763220", "accountNumber": "*****9317", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 142826.9, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "04560QAH9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10047.4, "positionType": "LONG", "purchasedPrice": 100.09, "securityId": "663332BD5", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11902.7, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "00206RHK1", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10484.2, "positionType": "LONG", "purchasedPrice": 100.14, "securityId": "821686T85", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "87638RCR6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 9991.6, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "06048WZH6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10000, "positionType": "LONG", "purchasedPrice": 100.12, "securityId": "36250CCL6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10000, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "37046AAD7", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.11, "securityId": "02153LAA2", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8208.8, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "76116EHN3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10016.9, "positionType": "LONG", "purchasedPrice": 100.2, "securityId": "770587DN0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10250.8, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "06741RDS7", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10037.8, "positionType": "LONG", "purchasedPrice": 100.11, "securityId": "657458FC4", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 9920.6, "positionType": "LONG", "purchasedPrice": 100.15, "securityId": "95001D2T6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "828373FT2", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "17326YU87", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10361, "positionType": "LONG", "purchasedPrice": 100.17, "securityId": "55336VAQ3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11397.9, "positionType": "LONG", "purchasedPrice": 100.19, "securityId": "862121AB6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "005594AF3", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 10206.2, "positionType": "LONG", "purchasedPrice": 100.1, "securityId": "72205RBV3", "securityIdType": "CUSIP", "units": 10000 } ], "nickname": "Individual" }, { "accountId": "868876557", "accountNumber": "*****3827", "accountType": "J", "availableCashBalance": 3743.67, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 19878.85, "displayName": "Cash Management-Joint", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 324, "positionType": "LONG", "purchasedPrice": 205.43, "securityId": "88579Y101", "securityIdType": "CUSIP", "symbol": "MMM", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 2697.03, "positionType": "LONG", "purchasedPrice": 23.22, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 107.666 }, { "averageCost": true, "cashAccount": false, "marketValue": 99.84, "positionType": "LONG", "purchasedPrice": 85.77, "securityId": "654106103", "securityIdType": "CUSIP", "symbol": "NKE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1742.97, "positionType": "LONG", "purchasedPrice": 95.12, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.67, "securityId": "767754104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.8, "positionType": "LONG", "purchasedPrice": 19.95, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 87.24, "positionType": "LONG", "purchasedPrice": 84.92, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 550.76, "positionType": "LONG", "purchasedPrice": 72.79, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 19.02, "positionType": "LONG", "purchasedPrice": 10.41, "securityId": "09228F103", "securityIdType": "CUSIP", "symbol": "BB", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 59.82, "positionType": "LONG", "purchasedPrice": 11.97, "securityId": "477143101", "securityIdType": "CUSIP", "symbol": "JBLU", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 903, "positionType": "LONG", "purchasedPrice": 28.53, "securityId": "679295105", "securityIdType": "CUSIP", "symbol": "OKTA", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 528.72, "positionType": "LONG", "purchasedPrice": 12.71, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 5513.78, "positionType": "LONG", "purchasedPrice": 11.61, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 17 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 42.07, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3199.56, "positionType": "LONG", "purchasedPrice": 3.03, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 28 }, { "averageCost": true, "cashAccount": false, "marketValue": 145.6, "positionType": "LONG", "purchasedPrice": 35.11, "securityId": "26874R108", "securityIdType": "CUSIP", "symbol": "E", "units": 5 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99128" } ], "marketValue": 3743.67, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 3743.67 }, { "averageCost": true, "cashAccount": false, "marketValue": 229.44, "positionType": "LONG", "purchasedPrice": 65.96, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 3 } ], "nickname": "Cash Management-Joint", "transactions": [ { "accountId": "868876557", "amount": -0.18, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.18, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "1719647396", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.18, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1719647395", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -3, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 3, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "1641102466", "transactionTimestamp": 1578373200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 3, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "1641102467", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -0.25, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.25, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "310543723", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "654106103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "NKE", "transactionId": "310543722", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "868876557", "amount": -0.16, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0.16, "status": "POSTED", "subCategory": "BY", "symbol": "QPIQQ", "transactionId": "587184075", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "868876557", "amount": 0.16, "category": "DV", "description": "CREDIT INTEREST AT WELLS FARGO BK NOT COVERED BY SIPC ", "securityId": "FDIC99128", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "QPIQQ", "transactionId": "587184074", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1704022165", "accountNumber": "*****8953", "accountType": "I", "availableCashBalance": 110406.26, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": -163377.91, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "26138EAN9", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": false, "cashAccount": true, "marketValue": 107695.77, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 107695.77 }, { "averageCost": false, "cashAccount": false, "marketValue": 1772, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2519.12, "positionType": "LONG", "purchasedPrice": 109.31, "securityId": "02361DAM2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6366.42, "positionType": "LONG", "purchasedPrice": 100.31, "securityId": "023608AG7", "securityIdType": "CUSIP", "units": 6000 }, { "averageCost": true, "cashAccount": false, "marketValue": -327771.9, "positionType": "LONG", "purchasedPrice": 278.7, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": -999 }, { "averageCost": true, "cashAccount": false, "marketValue": 22976, "positionType": "LONG", "purchasedPrice": 164.64, "securityId": "08862E109", "securityIdType": "CUSIP", "symbol": "BYND", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 3415.79, "positionType": "LONG", "purchasedPrice": 11.77, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 241.058 }, { "averageCost": true, "cashAccount": false, "marketValue": 5856.5, "positionType": "LONG", "purchasedPrice": 99.06, "securityId": "00115AAF6", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.08, "positionType": "LONG", "purchasedPrice": 38.92, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 348.96, "positionType": "LONG", "purchasedPrice": 75.36, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 10.02, "positionType": "LONG", "purchasedPrice": 16.23, "securityId": "31617R605", "securityIdType": "CUSIP", "symbol": "FFFDX", "units": 0.616 }, { "averageCost": true, "cashAccount": false, "marketValue": 446.46, "positionType": "LONG", "purchasedPrice": 170.72, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 1306.48, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 39.52, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 177.06, "positionType": "LONG", "purchasedPrice": 68.78, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 700.32, "positionType": "LONG", "purchasedPrice": 203.55, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 10600.5, "positionType": "LONG", "purchasedPrice": 98.28, "securityId": "00115AAE9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 100.49, "positionType": "LONG", "purchasedPrice": 10.16, "securityId": "31635T104", "securityIdType": "CUSIP", "symbol": "FIPDX", "units": 9.843 } ], "marginBalance": 56698.22, "nickname": "Individual", "transactions": [ { "accountId": "1704022165", "amount": 2710.49, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "PENDING", "subCategory": "OC", "transactionId": "1734553606", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2710.49, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "PENDING", "subCategory": "OC", "transactionId": "1734553606", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4301.05, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 4301.05, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "23140582", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 4301.05, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "23140583", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4301.05, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "23140584", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1047.58, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1047.58, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "147428213", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1047.58, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "147428212", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1047.58, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "147428211", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -449.55, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "351400443", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 449.55, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "351400442", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1767.69, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1767.69, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1240999134", "transactionTimestamp": 1579755600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1768.41, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1240999135", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1768.41, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1240999136", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1176.42, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1176.42, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1914671585", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 0.72, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1914671586", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1175.7, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1914671588", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1175.7, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1914671589", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1690.01, "category": "IA", "description": "YOU SOLD MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1690.01, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "796334064", "transactionTimestamp": 1579582800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X15-678953-1 ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": 9.843, "status": "POSTED", "subCategory": "BY", "symbol": "FIPDX", "transactionId": "796334065", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X15-678953-2 ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": -9.843, "status": "POSTED", "subCategory": "SL", "symbol": "FIPDX", "transactionId": "796334066", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1690.01, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "796334067", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1690.01, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "796334068", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3223.59, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -3223.59, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "728831932", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 3223.59, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831931", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3223.59, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831930", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4345.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831929", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 4345.65, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "728831928", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -593.24, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 593.24, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1847169451", "transactionTimestamp": 1579150800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 593.24, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1847169450", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -593.24, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1847169449", "transactionTimestamp": 1579150800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -631.29, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 631.29, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1173496999", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 731.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1173496997", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -731.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1173496996", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3075.92, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -3075.92, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1768346217", "transactionTimestamp": 1578978000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": -100, "category": "IA", "description": "YOU BOUGHT PROSPECTUS UNDER SEPARATE COVER ", "securityId": "31635T104", "securityIdType": "CUSIP", "shares": 9.843, "status": "POSTED", "subCategory": "BY", "symbol": "FIPDX", "transactionId": "1768346218", "transactionTimestamp": 1578978000, "unitPrice": 10.16 }, { "accountId": "1704022165", "amount": 3075.92, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1768346219", "transactionTimestamp": 1578978000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3075.92, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1768346220", "transactionTimestamp": 1578978000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2121.29, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2121.29, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "650008697", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2121.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "650008698", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2121.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "650008699", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1663.68, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1663.68, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1549455365", "transactionTimestamp": 1578632400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1663.68, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455364", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1663.68, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455363", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1728.27, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455362", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1728.27, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1549455361", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 2616.3, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -2616.3, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1136869039", "transactionTimestamp": 1578546000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2616.3, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1136869038", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2616.3, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1136869037", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2472.84, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2472.84, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "715642837", "transactionTimestamp": 1578459600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 2472.84, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "715642838", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2472.84, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "715642839", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1885.42, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -1885.42, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1481243897", "transactionTimestamp": 1578373200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 1885.42, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1481243898", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1885.42, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1481243899", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3429.33, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 3429.33, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "961211523", "transactionTimestamp": 1578286800, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 3429.33, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "961211522", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3429.33, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "961211521", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 4016.32, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -4016.32, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "630492497", "transactionTimestamp": 1578027600, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 4016.32, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492498", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -4016.32, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492499", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -3806.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492500", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 3806.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "630492501", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 801.29, "category": "IA", "description": "YOU SOLD MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -801.29, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "470402292", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 801.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "470402291", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -801.29, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "470402290", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2048.55, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 2048.55, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "407554728", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": -127.46, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 127.46, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "407554729", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 127.46, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "407554730", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 2048.55, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554731", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -2048.55, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554732", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -1808.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554733", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 1808.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "407554734", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1704022165", "amount": 14.36, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -14.36, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "1682166416", "transactionTimestamp": 1577682000, "unitPrice": 1 }, { "accountId": "1704022165", "amount": 14.36, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1682166417", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1704022165", "amount": -14.36, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1682166418", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1857906280", "accountNumber": "*****4147", "accountType": "TODJ", "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "displayName": "Joint WROS - TOD", "nickname": "Joint WROS - TOD" }, { "accountId": "1747852718", "accountNumber": "*****3582", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 77506952.72, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 1.92, "positionType": "LONG", "purchasedPrice": 11.58, "securityId": "56382Q102", "securityIdType": "CUSIP", "symbol": "MN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.2, "positionType": "LONG", "purchasedPrice": 12.89, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 29 }, { "averageCost": true, "cashAccount": false, "marketValue": 45.14, "positionType": "LONG", "purchasedPrice": 19.93, "securityId": "81141R100", "securityIdType": "CUSIP", "symbol": "SE", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 350910.56, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 2191 }, { "averageCost": false, "cashAccount": false, "marketValue": -18147, "positionType": "LONG", "securityId": "20825C104", "securityIdType": "CUSIP", "symbol": "COP", "units": -300 }, { "averageCost": true, "cashAccount": false, "marketValue": 140.4, "positionType": "LONG", "purchasedPrice": 41.93, "securityId": "464287374", "securityIdType": "CUSIP", "symbol": "IGE", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 29826.25, "positionType": "LONG", "purchasedPrice": 17.59, "securityId": "315910844", "securityIdType": "CUSIP", "symbol": "FLATX", "units": 1021.797 }, { "averageCost": true, "cashAccount": false, "marketValue": 157.75, "positionType": "LONG", "purchasedPrice": 141.53, "securityId": "92206C623", "securityIdType": "CUSIP", "symbol": "VTWG", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": -181750.8, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": -1320 }, { "averageCost": true, "cashAccount": false, "marketValue": 2280, "positionType": "LONG", "purchasedPrice": 4.71, "securityId": "85207U105", "securityIdType": "CUSIP", "symbol": "S", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 56.6, "securityId": "464288455", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 26.1, "positionType": "LONG", "purchasedPrice": 25.92, "securityId": "80283M101", "securityIdType": "CUSIP", "symbol": "SC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.86, "securityId": "912796PE3", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8427, "positionType": "LONG", "purchasedPrice": 88.75, "securityId": "037411105", "securityIdType": "CUSIP", "symbol": "APA", "units": 300 }, { "averageCost": false, "cashAccount": false, "marketValue": 62634, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 10439 }, { "averageCost": true, "cashAccount": false, "marketValue": 118.45, "positionType": "LONG", "purchasedPrice": 113.48, "securityId": "922908744", "securityIdType": "CUSIP", "symbol": "VTV", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5745.8, "positionType": "LONG", "purchasedPrice": 213.91, "securityId": "78467X109", "securityIdType": "CUSIP", "symbol": "DIA", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 1962, "positionType": "LONG", "purchasedPrice": 49.67, "securityId": "G5480U120", "securityIdType": "CUSIP", "symbol": "LBTYK", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9454, "positionType": "LONG", "purchasedPrice": 34.84, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 98.32, "securityId": "78355W874", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 970.72, "positionType": "LONG", "purchasedPrice": 56.47, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 16 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.3, "securityId": "713661304", "securityIdType": "CUSIP", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.88, "securityId": "536020100", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2341, "positionType": "LONG", "purchasedPrice": 20.49, "securityId": "41013W108", "securityIdType": "CUSIP", "symbol": "HPI", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 10177, "positionType": "LONG", "purchasedPrice": 1, "securityId": "06610PBV4", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": 42161.4, "positionType": "LONG", "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 5955 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.12, "positionType": "LONG", "purchasedPrice": 1.74, "securityId": "G3204Q160", "securityIdType": "CUSIP", "symbol": "ECYGF", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 99.92, "securityId": "3137EADG1", "securityIdType": "CUSIP", "units": 52000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1468.35, "positionType": "LONG", "purchasedPrice": 9.32, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 251 }, { "averageCost": true, "cashAccount": false, "marketValue": 2500.34, "positionType": "LONG", "purchasedPrice": 23.03, "securityId": "92646A252", "securityIdType": "CUSIP", "symbol": "MUXAX", "units": 119.405 }, { "averageCost": true, "cashAccount": false, "marketValue": 27906.44, "positionType": "LONG", "purchasedPrice": 30.83, "securityId": "Q0604U105", "securityIdType": "CUSIP", "symbol": "ASXFF", "units": 503 }, { "averageCost": true, "cashAccount": false, "marketValue": 108.2, "positionType": "LONG", "purchasedPrice": 118.8, "securityId": "92206C649", "securityIdType": "CUSIP", "symbol": "VTWV", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 4331, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 142 }, { "averageCost": true, "cashAccount": false, "marketValue": 70.1, "positionType": "LONG", "purchasedPrice": 58.19, "securityId": "842587107", "securityIdType": "CUSIP", "symbol": "SO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1624294.72, "positionType": "LONG", "purchasedPrice": 37.54, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 5008 }, { "averageCost": true, "cashAccount": false, "marketValue": 336476.01, "positionType": "LONG", "purchasedPrice": 223258.82, "securityId": "084670108", "securityIdType": "CUSIP", "symbol": "BRKA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1029.48, "positionType": "LONG", "purchasedPrice": 310.45, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1276.1, "positionType": "LONG", "purchasedPrice": 44.59, "securityId": "464287549", "securityIdType": "CUSIP", "symbol": "IGM", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 3726.2, "positionType": "LONG", "purchasedPrice": 345.72, "securityId": "78467Y107", "securityIdType": "CUSIP", "symbol": "MDY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2.65, "positionType": "LONG", "purchasedPrice": 26.41, "securityId": "80007P869", "securityIdType": "CUSIP", "symbol": "SD", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": -132887.7, "positionType": "LONG", "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": -990 }, { "averageCost": true, "cashAccount": false, "marketValue": 274.1, "positionType": "LONG", "purchasedPrice": 28.89, "securityId": "33737J109", "securityIdType": "CUSIP", "symbol": "FPA", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "02587CFV7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 11.01, "securityId": "464286673", "securityIdType": "CUSIP", "units": -2 }, { "averageCost": true, "cashAccount": false, "marketValue": -430, "positionType": "LONG", "purchasedPrice": 4.94, "securityId": "3867919BZ", "securityIdType": "CUSIP", "symbol": "-IBM210115C150", "units": -1 }, { "averageCost": true, "cashAccount": false, "marketValue": 5964.75, "positionType": "LONG", "purchasedPrice": 10.78, "securityId": "316390863", "securityIdType": "CUSIP", "symbol": "FSELX", "units": 463.822 }, { "averageCost": false, "cashAccount": false, "marketValue": 11704, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 220 }, { "averageCost": true, "cashAccount": false, "marketValue": 2317.2, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "023111206", "securityIdType": "CUSIP", "symbol": "AMRN", "units": 120 }, { "averageCost": true, "cashAccount": false, "marketValue": 5913, "positionType": "LONG", "purchasedPrice": 26.44, "securityId": "059520106", "securityIdType": "CUSIP", "symbol": "BCH", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.17, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 1582 }, { "averageCost": true, "cashAccount": false, "marketValue": 95.02, "positionType": "LONG", "purchasedPrice": 92.1, "securityId": "922908553", "securityIdType": "CUSIP", "symbol": "VNQ", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1920.96, "positionType": "LONG", "purchasedPrice": 219.9, "securityId": "38141G104", "securityIdType": "CUSIP", "symbol": "GS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 866, "positionType": "LONG", "purchasedPrice": 35.58, "securityId": "681936100", "securityIdType": "CUSIP", "symbol": "OHI", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 7.3, "positionType": "LONG", "purchasedPrice": 15.51, "securityId": "85208J109", "securityIdType": "CUSIP", "symbol": "FUND", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 151.04, "positionType": "LONG", "purchasedPrice": 131.61, "securityId": "92204A876", "securityIdType": "CUSIP", "symbol": "VPU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1440, "positionType": "LONG", "purchasedPrice": 3.51, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 10113, "positionType": "LONG", "purchasedPrice": 51.13, "securityId": "98389B100", "securityIdType": "CUSIP", "symbol": "XEL", "units": 150 }, { "averageCost": false, "cashAccount": false, "marketValue": 47730, "positionType": "LONG", "securityId": "98954M200", "securityIdType": "CUSIP", "symbol": "Z", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 40795, "positionType": "LONG", "purchasedPrice": 33.44, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "20084V108", "securityIdType": "CUSIP", "units": -10 }, { "averageCost": true, "cashAccount": false, "marketValue": 81.11, "positionType": "LONG", "purchasedPrice": 81.28, "securityId": "922042742", "securityIdType": "CUSIP", "symbol": "VT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 165.51, "positionType": "LONG", "purchasedPrice": 155.24, "securityId": "922908751", "securityIdType": "CUSIP", "symbol": "VB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 479056.5, "positionType": "LONG", "purchasedPrice": 1.34, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 12930 }, { "averageCost": true, "cashAccount": false, "marketValue": 361.26, "positionType": "LONG", "purchasedPrice": 108.23, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "080515CZ0", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.73, "securityId": "984121103", "securityIdType": "CUSIP", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 4545.06, "positionType": "LONG", "purchasedPrice": 44.32, "securityId": "G5821P111", "securityIdType": "CUSIP", "symbol": "DLG:DE", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 71.83, "securityId": "74876Y101", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 19769.9, "positionType": "LONG", "purchasedPrice": 63.45, "securityId": "783554835", "securityIdType": "CUSIP", "symbol": "RYOAX", "units": 281.302 }, { "averageCost": true, "cashAccount": false, "marketValue": 1032.42, "positionType": "LONG", "purchasedPrice": 0.07, "securityId": "CURZAR112", "securityIdType": "CUSIP", "symbol": "ZAR", "units": 15077.71 }, { "averageCost": true, "cashAccount": false, "marketValue": 5.53, "positionType": "LONG", "purchasedPrice": 42.63, "securityId": "53635B107", "securityIdType": "CUSIP", "symbol": "LQDT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 287.3, "positionType": "LONG", "purchasedPrice": 27.08, "securityId": "895436103", "securityIdType": "CUSIP", "symbol": "TY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 148.15, "positionType": "LONG", "purchasedPrice": 141.76, "securityId": "921932869", "securityIdType": "CUSIP", "symbol": "IVOG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 81.9, "positionType": "LONG", "purchasedPrice": 19.15, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "080515CZ0", "securityIdType": "CUSIP", "units": 29000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 63.06, "securityId": "25490A309", "securityIdType": "CUSIP", "units": 600 }, { "averageCost": true, "cashAccount": false, "marketValue": 229033.98, "positionType": "LONG", "purchasedPrice": 107.93, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 1026 }, { "averageCost": true, "cashAccount": false, "marketValue": 17360.96, "positionType": "LONG", "purchasedPrice": 52.06, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 227 }, { "averageCost": true, "cashAccount": false, "marketValue": 69997.56, "positionType": "LONG", "purchasedPrice": 14.42, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 604 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.32, "positionType": "LONG", "purchasedPrice": 1, "securityId": "20030N101", "securityIdType": "CUSIP", "symbol": "CMCSA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 65, "positionType": "LONG", "purchasedPrice": 1.9, "securityId": "G3204Q285", "securityIdType": "CUSIP", "symbol": "ETSYF", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "48128FA77", "securityIdType": "CUSIP", "units": 7000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "3133EC5V2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6.58, "positionType": "LONG", "purchasedPrice": 10.85, "securityId": "33812L102", "securityIdType": "CUSIP", "symbol": "FIT", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.05, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 2000, "positionType": "LONG", "purchasedPrice": 98.59, "securityId": "26138EAQ2", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 2054.79, "positionType": "LONG", "purchasedPrice": 9.68, "securityId": "921659108", "securityIdType": "CUSIP", "symbol": "VNDA", "units": 153 }, { "averageCost": true, "cashAccount": false, "marketValue": -20537.19, "positionType": "LONG", "purchasedPrice": 63.13, "securityId": "46625H100", "securityIdType": "CUSIP", "symbol": "JPM", "units": -153 }, { "averageCost": true, "cashAccount": false, "marketValue": 234.42, "positionType": "LONG", "purchasedPrice": 67.77, "securityId": "756109104", "securityIdType": "CUSIP", "symbol": "O", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 131.73, "positionType": "LONG", "purchasedPrice": 130.38, "securityId": "92206C664", "securityIdType": "CUSIP", "symbol": "VTWO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 68164.04, "positionType": "LONG", "purchasedPrice": 59.98, "securityId": "31617K287", "securityIdType": "CUSIP", "symbol": "FIRRX", "units": 1250.487 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "26441CAD7", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 180.37, "positionType": "LONG", "purchasedPrice": 161.55, "securityId": "922908629", "securityIdType": "CUSIP", "symbol": "VO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 71265, "positionType": "LONG", "purchasedPrice": 4.34, "securityId": "007903107", "securityIdType": "CUSIP", "symbol": "AMD", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 5216.1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "792895G73", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.24, "securityId": "013817101", "securityIdType": "CUSIP", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 47.95, "securityId": "19761R307", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 7920, "positionType": "LONG", "purchasedPrice": 12.63, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 2750 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 46.84, "securityId": "G05384105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 6402, "positionType": "LONG", "purchasedPrice": 9.81, "securityId": "760975102", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4228.8, "positionType": "LONG", "purchasedPrice": 1.54, "securityId": "CURGBP141", "securityIdType": "CUSIP", "symbol": "GBP", "units": 3250.43 }, { "averageCost": true, "cashAccount": false, "marketValue": 166.06, "positionType": "LONG", "purchasedPrice": 143.84, "securityId": "922908769", "securityIdType": "CUSIP", "symbol": "VTI", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 641.4, "positionType": "LONG", "purchasedPrice": 63.27, "securityId": "110122108", "securityIdType": "CUSIP", "symbol": "BMY", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 4095.72, "positionType": "LONG", "purchasedPrice": 14.52, "securityId": "91232N108", "securityIdType": "CUSIP", "symbol": "USO", "units": 367 }, { "averageCost": true, "cashAccount": false, "marketValue": 4.49, "positionType": "LONG", "purchasedPrice": 11.42, "securityId": "48283N106", "securityIdType": "CUSIP", "symbol": "KDMN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 550.8, "securityId": "38259P508", "securityIdType": "CUSIP", "units": 699 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 18.62, "securityId": "020875803", "securityIdType": "CUSIP", "units": 822.771 }, { "averageCost": false, "cashAccount": false, "marketValue": 4623511, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 81100 }, { "averageCost": false, "cashAccount": false, "marketValue": -5604, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": -934 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 29.8, "securityId": "G1154H107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 7392717.08, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 22634 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.54, "securityId": "90262H239", "securityIdType": "CUSIP", "units": 336.061 }, { "averageCost": false, "cashAccount": false, "marketValue": -62711, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": -1100 }, { "averageCost": true, "cashAccount": false, "marketValue": -22179.2, "positionType": "LONG", "purchasedPrice": 17.27, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": -290 }, { "averageCost": true, "cashAccount": false, "marketValue": 4000, "positionType": "LONG", "purchasedPrice": 1, "securityId": "949763VJ2", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 570, "positionType": "LONG", "purchasedPrice": 7.91, "securityId": "3867919MK", "securityIdType": "CUSIP", "symbol": "-IBM210115C145", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 34.15, "securityId": "18383M100", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 626.05, "positionType": "LONG", "purchasedPrice": 64.83, "securityId": "81369Y407", "securityIdType": "CUSIP", "symbol": "XLY", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 21.86, "positionType": "LONG", "purchasedPrice": 32.95, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1004.01, "positionType": "LONG", "purchasedPrice": 1, "securityId": "90348JFV7", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 11358.19, "positionType": "LONG", "purchasedPrice": 11.39, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 963.375 }, { "averageCost": true, "cashAccount": false, "marketValue": 98.85, "positionType": "LONG", "purchasedPrice": 0.13, "securityId": "CURHKD047", "securityIdType": "CUSIP", "symbol": "HKD", "units": 768.33 }, { "averageCost": true, "cashAccount": false, "marketValue": 644.73, "positionType": "LONG", "purchasedPrice": 16.09, "securityId": "31617R704", "securityIdType": "CUSIP", "symbol": "FFFEX", "units": 36.079 }, { "averageCost": false, "cashAccount": false, "marketValue": 54587062.81, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 396449 }, { "averageCost": true, "cashAccount": false, "marketValue": 41.53, "positionType": "LONG", "purchasedPrice": 47.33, "securityId": "78469C103", "securityIdType": "CUSIP", "symbol": "SP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 9040.2, "positionType": "LONG", "purchasedPrice": 442.81, "securityId": "29444U700", "securityIdType": "CUSIP", "symbol": "EQIX", "units": 15 }, { "averageCost": true, "cashAccount": false, "marketValue": 118.83, "positionType": "LONG", "purchasedPrice": 118.66, "securityId": "922908512", "securityIdType": "CUSIP", "symbol": "VOE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 60.36, "securityId": "50076Q106", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.97, "securityId": "24702R101", "securityIdType": "CUSIP", "units": 208 }, { "averageCost": false, "cashAccount": false, "marketValue": 1055160, "positionType": "LONG", "securityId": "169656105", "securityIdType": "CUSIP", "symbol": "CMG", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 134.85, "positionType": "LONG", "purchasedPrice": 141.14, "securityId": "922908611", "securityIdType": "CUSIP", "symbol": "VBR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 24.87, "positionType": "LONG", "purchasedPrice": 18.84, "securityId": "18469Q108", "securityIdType": "CUSIP", "symbol": "CTR", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 10242.6, "positionType": "LONG", "purchasedPrice": 96.97, "securityId": "3130A0EN6", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 133.78, "securityId": "73935A104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 5.62, "securityId": "767754104", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3496.39, "positionType": "LONG", "purchasedPrice": 52.58, "securityId": "360876106", "securityIdType": "CUSIP", "symbol": "FUNDX", "units": 57.056 }, { "averageCost": false, "cashAccount": false, "marketValue": 18233.6, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 407 }, { "averageCost": true, "cashAccount": false, "marketValue": 5360, "positionType": "LONG", "purchasedPrice": 47.31, "securityId": "902973304", "securityIdType": "CUSIP", "symbol": "USB", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": -90.3, "positionType": "LONG", "purchasedPrice": 5.84, "securityId": "55262C100", "securityIdType": "CUSIP", "symbol": "MBI", "units": -10 }, { "averageCost": false, "cashAccount": false, "marketValue": -59020, "positionType": "LONG", "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": -1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 76.32, "securityId": "315911206", "securityIdType": "CUSIP", "symbol": "FUSEX", "units": 32.757 }, { "averageCost": true, "cashAccount": false, "marketValue": 2017.98, "positionType": "LONG", "purchasedPrice": 100.04, "securityId": "594918AH7", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 53.52, "positionType": "LONG", "purchasedPrice": 60.48, "securityId": "92206C771", "securityIdType": "CUSIP", "symbol": "VMBS", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 778.67, "positionType": "LONG", "purchasedPrice": 0.94, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 1028.16 }, { "averageCost": true, "cashAccount": false, "marketValue": 54.44, "positionType": "LONG", "purchasedPrice": 59.54, "securityId": "922907746", "securityIdType": "CUSIP", "symbol": "VTEB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "172967KE0", "securityIdType": "CUSIP", "units": 20000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6470, "positionType": "LONG", "purchasedPrice": 56.12, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "33648GAQ6", "securityIdType": "CUSIP", "units": 4000 }, { "averageCost": true, "cashAccount": false, "marketValue": 5776.7, "positionType": "LONG", "purchasedPrice": 109.11, "securityId": "00344NKS2", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 187.87, "positionType": "LONG", "purchasedPrice": 143.78, "securityId": "92206C680", "securityIdType": "CUSIP", "symbol": "VONG", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1.49, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 67620, "positionType": "LONG", "purchasedPrice": 2.13, "securityId": "313586109", "securityIdType": "CUSIP", "symbol": "FNMA", "units": 21000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 47.99, "securityId": "G5480U153", "securityIdType": "CUSIP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 5289.85, "positionType": "LONG", "purchasedPrice": 103.44, "securityId": "64986AS28", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": false, "marketValue": -101080, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -1900 }, { "averageCost": true, "cashAccount": false, "marketValue": 3458, "positionType": "LONG", "purchasedPrice": 28.57, "securityId": "278642103", "securityIdType": "CUSIP", "symbol": "EBAY", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 4397.62, "positionType": "LONG", "purchasedPrice": 0.78, "securityId": "CURAUD009", "securityIdType": "CUSIP", "symbol": "AUD", "units": 6515.96 }, { "averageCost": true, "cashAccount": false, "marketValue": 682, "positionType": "LONG", "purchasedPrice": 21.39, "securityId": "313855108", "securityIdType": "CUSIP", "symbol": "FSS", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 149.94, "positionType": "LONG", "purchasedPrice": 129.26, "securityId": "92206C730", "securityIdType": "CUSIP", "symbol": "VONE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -0.8, "positionType": "LONG", "purchasedPrice": 0.17, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": -1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "084601QX4", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4951.5, "positionType": "LONG", "purchasedPrice": 21.18, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 150 }, { "averageCost": true, "cashAccount": false, "marketValue": 6273101.24, "positionType": "LONG", "purchasedPrice": 4.19, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 37331 }, { "averageCost": true, "cashAccount": false, "marketValue": 96.62, "positionType": "LONG", "purchasedPrice": 100.58, "securityId": "92204A884", "securityIdType": "CUSIP", "symbol": "VOX", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 372, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 62 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 108.55, "securityId": "53578A108", "securityIdType": "CUSIP", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 5328, "positionType": "LONG", "purchasedPrice": 30.05, "securityId": "23703Q203", "securityIdType": "CUSIP", "symbol": "DQ", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 18.76, "positionType": "LONG", "purchasedPrice": 43.64, "securityId": "129500104", "securityIdType": "CUSIP", "symbol": "CAL", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3249.93, "positionType": "LONG", "purchasedPrice": 47.62, "securityId": "316390475", "securityIdType": "CUSIP", "symbol": "FSMEX", "units": 52.52 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.93, "securityId": "34958B106", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 5283.83, "positionType": "LONG", "purchasedPrice": 185.25, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 38 }, { "averageCost": true, "cashAccount": false, "marketValue": 2329.43, "positionType": "LONG", "purchasedPrice": 24.08, "securityId": "316390442", "securityIdType": "CUSIP", "symbol": "FPHAX", "units": 99.294 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.58, "securityId": "912318201", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.12, "securityId": "044102101", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 249, "positionType": "LONG", "purchasedPrice": 8.9, "securityId": "044103109", "securityIdType": "CUSIP", "symbol": "AHT", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 85.28, "positionType": "LONG", "purchasedPrice": 89.52, "securityId": "921937835", "securityIdType": "CUSIP", "symbol": "BND", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 300.15, "positionType": "LONG", "purchasedPrice": 250.81, "securityId": "922908363", "securityIdType": "CUSIP", "symbol": "VOO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -86876.68, "positionType": "LONG", "purchasedPrice": 20.8, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": -517 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.8, "securityId": "013817101", "securityIdType": "CUSIP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 113430.7, "positionType": "LONG", "purchasedPrice": 78.99, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 535 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "010237EL5", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 4208.57, "positionType": "LONG", "purchasedPrice": 187.16, "securityId": "316390772", "securityIdType": "CUSIP", "symbol": "FBIOX", "units": 194.661 }, { "averageCost": true, "cashAccount": false, "marketValue": 98.6, "positionType": "LONG", "purchasedPrice": 80.44, "securityId": "464288851", "securityIdType": "CUSIP", "symbol": "IEO", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 1249.75, "positionType": "LONG", "purchasedPrice": 82.88, "securityId": "464287515", "securityIdType": "CUSIP", "symbol": "IGV", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 26628, "positionType": "LONG", "purchasedPrice": 68.45, "securityId": "25179M103", "securityIdType": "CUSIP", "symbol": "DVN", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 73833.46, "positionType": "LONG", "purchasedPrice": 102.55, "securityId": "316071109", "securityIdType": "CUSIP", "symbol": "FCNTX", "units": 5210.548 }, { "averageCost": true, "cashAccount": false, "marketValue": 2689.72, "positionType": "LONG", "purchasedPrice": 15.1, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 252.556 }, { "averageCost": true, "cashAccount": false, "marketValue": 198857.34, "positionType": "LONG", "purchasedPrice": 26.17, "securityId": "458140100", "securityIdType": "CUSIP", "symbol": "INTC", "units": 2998 }, { "averageCost": true, "cashAccount": false, "marketValue": 5128.8, "positionType": "LONG", "purchasedPrice": 83.67, "securityId": "30231G102", "securityIdType": "CUSIP", "symbol": "XOM", "units": 80 }, { "averageCost": true, "cashAccount": false, "marketValue": 622.58, "positionType": "LONG", "purchasedPrice": 18.63, "securityId": "G3922B107", "securityIdType": "CUSIP", "symbol": "G", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 732.9, "positionType": "LONG", "purchasedPrice": 57.7, "securityId": "33733E302", "securityIdType": "CUSIP", "symbol": "FDN", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 586.07, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 331 }, { "averageCost": true, "cashAccount": false, "marketValue": 437010, "positionType": "LONG", "purchasedPrice": 1960.28, "securityId": "02079K305", "securityIdType": "CUSIP", "symbol": "GOOGL", "units": 300 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 21.35, "securityId": "86933G105", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 4089.04, "positionType": "LONG", "purchasedPrice": 22.88, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 316 }, { "averageCost": true, "cashAccount": false, "marketValue": 137.99, "positionType": "LONG", "purchasedPrice": 135.84, "securityId": "921932885", "securityIdType": "CUSIP", "symbol": "IVOO", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1078.32, "positionType": "LONG", "purchasedPrice": 81.37, "securityId": "03073E105", "securityIdType": "CUSIP", "symbol": "ABC", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 7575.8, "positionType": "LONG", "purchasedPrice": 34910.79, "securityId": "09857L108", "securityIdType": "CUSIP", "symbol": "BKNG", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 21506.12, "positionType": "LONG", "purchasedPrice": 70.52, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 223 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.61, "positionType": "LONG", "purchasedPrice": 0.99, "securityId": "06827T104", "securityIdType": "CUSIP", "symbol": "BCAP", "units": 6100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9334, "positionType": "LONG", "purchasedPrice": 56.52, "securityId": "278265103", "securityIdType": "CUSIP", "symbol": "EV", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 92196.1, "positionType": "LONG", "purchasedPrice": 202.45, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 281 }, { "averageCost": true, "cashAccount": false, "marketValue": 27848.38, "positionType": "LONG", "purchasedPrice": 171.69, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 119 }, { "averageCost": true, "cashAccount": false, "marketValue": 24828.05, "positionType": "LONG", "purchasedPrice": 1.47, "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": 22560.7 }, { "averageCost": true, "cashAccount": false, "marketValue": -261.72, "positionType": "LONG", "purchasedPrice": 34.29, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -3 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 150.41, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2086.3, "positionType": "LONG", "purchasedPrice": 92.7, "securityId": "001055AQ5", "securityIdType": "CUSIP", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 1176.25, "positionType": "LONG", "purchasedPrice": 10.26, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 202.01, "positionType": "LONG", "purchasedPrice": 166.97, "securityId": "922908595", "securityIdType": "CUSIP", "symbol": "VBK", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1505.46, "positionType": "LONG", "purchasedPrice": 30.04, "securityId": "487836108", "securityIdType": "CUSIP", "symbol": "K", "units": 22 }, { "averageCost": true, "cashAccount": false, "marketValue": 8715.63, "positionType": "LONG", "purchasedPrice": 79.29, "securityId": "751212101", "securityIdType": "CUSIP", "symbol": "RL", "units": 77 }, { "averageCost": true, "cashAccount": false, "marketValue": 10911.3, "positionType": "LONG", "purchasedPrice": 106.31, "securityId": "01025PBT9", "securityIdType": "CUSIP", "units": 10000 }, { "averageCost": false, "cashAccount": false, "marketValue": -750572.76, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": -2298 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 230.82, "securityId": "740189105", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 7820, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 2000 }, { "averageCost": true, "cashAccount": false, "marketValue": 472.97, "positionType": "LONG", "purchasedPrice": 45.59, "securityId": "97717W877", "securityIdType": "CUSIP", "symbol": "DEW", "units": 10 }, { "averageCost": false, "cashAccount": false, "marketValue": -41841.1, "positionType": "LONG", "securityId": "25746U109", "securityIdType": "CUSIP", "symbol": "D", "units": -490 }, { "averageCost": true, "cashAccount": false, "marketValue": 130722.75, "positionType": "LONG", "purchasedPrice": 120.02, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 225 }, { "averageCost": false, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "securityId": "741503403", "securityIdType": "CUSIP", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": -4022, "positionType": "LONG", "purchasedPrice": 35.97, "securityId": "87971M103", "securityIdType": "CUSIP", "symbol": "TU", "units": -100 }, { "averageCost": true, "cashAccount": false, "marketValue": 19.44, "positionType": "LONG", "purchasedPrice": 8.3, "securityId": "04878Q863", "securityIdType": "CUSIP", "symbol": "AT", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 12764.73, "positionType": "LONG", "purchasedPrice": 21.21, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 550.679 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 1, "securityId": "48128FA77", "securityIdType": "CUSIP", "units": 9000 }, { "averageCost": true, "cashAccount": false, "marketValue": 6163.91, "positionType": "LONG", "purchasedPrice": 86.67, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 84.704 }, { "averageCost": true, "cashAccount": false, "marketValue": 273.36, "positionType": "LONG", "purchasedPrice": 34.59, "securityId": "464287531", "securityIdType": "CUSIP", "symbol": "IGN", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 22296, "positionType": "LONG", "purchasedPrice": 430.07, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 240.65, "positionType": "LONG", "purchasedPrice": 39.01, "securityId": "33734X119", "securityIdType": "CUSIP", "symbol": "FXG", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.29, "securityId": "48660Q102", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 775.05, "positionType": "LONG", "purchasedPrice": 48.63, "securityId": "540424108", "securityIdType": "CUSIP", "symbol": "L", "units": 15 } ], "marginBalance": 78710524.94, "nickname": "Option Level 7", "transactions": [ { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $150.00 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $450.00 PENDING CASH PAYMENT", "securityId": "459200101", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "IBM", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": " DIV OF $1500.00 PENDING REINVESTMENT", "securityId": "594918104", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "MSFT", "transactionId": "1850587485", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 3.16, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "1599148919", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -7422.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1803121124", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 7422.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1803121119", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 52.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "210721573", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -456, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "210721572", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 8.75, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "462950878", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -0.54, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "A", "transactionId": "462950879", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 60.75, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "98389B100", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "XEL", "transactionId": "655386642", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 2.42, "description": "INTEREST ", "securityId": "90348JFV7", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "655386641", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "EXPIRED CALL (S) SPRINT CORPORATION ", "securityId": "3434179PJ", "securityIdType": "CUSIP", "shares": -2, "status": "POSTED", "subCategory": "SL", "symbol": "S200117C7", "transactionId": "655386639", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3434179MG", "securityIdType": "CUSIP", "shares": 2, "status": "POSTED", "subCategory": "BY", "symbol": "S200117P7", "transactionId": "655386638", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3392429VT", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "IBM200117C125", "transactionId": "655386637", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -1404.95, "category": "IA", "description": "YOU BOUGHT ASSIGNED PUTS AS OF 01-17-20 ", "securityId": "85207U105", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "S", "transactionId": "655386615", "transactionTimestamp": 1579582800, "unitPrice": 7 }, { "accountId": "1747852718", "amount": 12494.79, "category": "IA", "description": "YOU SOLD ASSIGNED CALLS AS OF 01-17-20 ", "securityId": "459200101", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "IBM", "transactionId": "655386614", "transactionTimestamp": 1579582800, "unitPrice": 125 }, { "accountId": "1747852718", "amount": -11074.9, "category": "IA", "description": "MARGIN INTEREST @ 6.000% AVG BAL 3,164,258DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "655386613", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -13777.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2114414686", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 13777.19, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2114414692", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 42, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "902973304", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "USB", "transactionId": "1669749589", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.68, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "756109104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "O", "transactionId": "1669749590", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 43.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "1669749591", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "044103109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "AHT", "transactionId": "1669749592", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 20, "description": "INTEREST ", "securityId": "26138EAQ2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "1669749593", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 17.31, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "78467X109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DIA", "transactionId": "801712009", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 52.94, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "751212101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "RL", "transactionId": "1293791230", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -7502.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1293791253", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 7502.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1293791258", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.07, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "129500104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CAL", "transactionId": "1171605871", "transactionTimestamp": 1578546000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1306.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1270849517", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -1306.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1270849516", "transactionTimestamp": 1578459600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -891, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "46625H100", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "JPM", "transactionId": "505248484", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 19.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248480", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -19.8, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248458", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 891, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248457", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -891, "category": "ZZ", "description": "JOURNALED MARGIN TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "505248456", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 297, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1347263419", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -297, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1347263420", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 293.49, "category": "IA", "description": "LONG-TERM CAP GAIN ", "securityId": "360876106", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FUNDX", "transactionId": "1355999880", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 277.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999878", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -277.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999856", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -16003.47, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999855", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 16003.47, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355999849", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 4.93, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "33737J109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FPA", "transactionId": "1646113269", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1.29, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "33734X119", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FXG", "transactionId": "1646113268", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 23.64, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1646113267", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 79.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113261", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -79.2, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113239", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -8847.3, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113238", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 8847.3, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1646113233", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908769", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VTI", "transactionId": "371501609", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.89, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908751", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VB", "transactionId": "371501608", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.91, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908744", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VTV", "transactionId": "371501586", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.99, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908629", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VO", "transactionId": "371501585", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 1.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908611", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VBR", "transactionId": "371501584", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.45, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908595", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VBK", "transactionId": "371501583", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 0.84, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "922908512", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "VOE", "transactionId": "371501582", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 9.64, "description": "INTEREST ", "securityId": "949763VJ2", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "371501581", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 24.66, "description": "INTEREST ", "securityId": "06610PBV4", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "transactionId": "371501579", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": 2434639.67, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "371501554", "transactionTimestamp": 1577682000, "unitPrice": 0 }, { "accountId": "1747852718", "amount": -2434639.67, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "371501553", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "1857695883", "accountNumber": "*****4865", "accountType": "I", "availableCashBalance": 10.22, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 10.22, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 10.22, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 10.22 } ], "nickname": "Individual", "transactions": [ { "accountId": "1857695883", "amount": -0.01, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.01, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "543441869", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1857695883", "amount": 0.01, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "543441870", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1177379073", "accountNumber": "*****7429", "accountType": "IRA", "availableCashBalance": 200, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 200, "displayName": "Traditional IRA", "holdings": [ { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99516" } ], "marketValue": 200, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 200 } ], "nickname": "Traditional IRA", "transactions": [ { "accountId": "1177379073", "amount": -200, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "FDIC99516", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "QOKIQ", "transactionId": "1734530416", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1177379073", "amount": 100, "category": "IA", "description": "CONTRIB PRIOR YEAR VS X21-988808-1 PRIOR CONTRIBUTION ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1734530417", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1177379073", "amount": 100, "category": "IA", "description": "CONTRIB CURRENT YR VS X21-988808-1 CURRENT CONTRIBUTION", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1734530418", "transactionTimestamp": 1579237200, "unitPrice": 0 } ] }, { "accountId": "1747770816", "accountNumber": "*****3809", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 8957659.52, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 111720, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 2100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 2.86, "securityId": "984332106", "securityIdType": "CUSIP", "symbol": "YHOO:CL", "units": 617 }, { "averageCost": true, "cashAccount": false, "marketValue": 124761, "positionType": "LONG", "purchasedPrice": 31.09, "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 1300 }, { "averageCost": true, "cashAccount": false, "marketValue": 3681.98, "positionType": "LONG", "purchasedPrice": 22.03, "securityId": "316345107", "securityIdType": "CUSIP", "symbol": "FPURX", "units": 158.843 }, { "averageCost": true, "cashAccount": false, "marketValue": 1728, "positionType": "LONG", "purchasedPrice": 11.87, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 600 }, { "averageCost": true, "cashAccount": false, "marketValue": 16167.06, "positionType": "LONG", "purchasedPrice": 12.82, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 1974 }, { "averageCost": true, "cashAccount": false, "marketValue": 7432, "positionType": "LONG", "purchasedPrice": 1646.02, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 207.4, "positionType": "LONG", "purchasedPrice": 1, "securityId": "CURCHF138", "securityIdType": "CUSIP", "symbol": "CHF", "units": 201.97 }, { "averageCost": true, "cashAccount": false, "marketValue": 1392.31, "positionType": "LONG", "purchasedPrice": 16.1, "securityId": "316390863", "securityIdType": "CUSIP", "symbol": "FSELX", "units": 108.267 }, { "averageCost": true, "cashAccount": false, "marketValue": 517.6, "positionType": "LONG", "purchasedPrice": 55.61, "securityId": "517834107", "securityIdType": "CUSIP", "symbol": "LVS", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 5264.29, "positionType": "LONG", "purchasedPrice": 15.43, "securityId": "315910562", "securityIdType": "CUSIP", "symbol": "FSCOX", "units": 259.197 }, { "averageCost": true, "cashAccount": false, "marketValue": 6220, "positionType": "LONG", "purchasedPrice": 8.11, "securityId": "302635107", "securityIdType": "CUSIP", "symbol": "FSK", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 45450.65, "positionType": "LONG", "purchasedPrice": 46.23, "securityId": "G5821P111", "securityIdType": "CUSIP", "symbol": "DLG:DE", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 30.01, "positionType": "LONG", "purchasedPrice": 11.67, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 2.546 }, { "averageCost": true, "cashAccount": false, "marketValue": 7575.75, "positionType": "LONG", "purchasedPrice": 12.01, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": 925 }, { "averageCost": true, "cashAccount": false, "marketValue": 9704.91, "positionType": "LONG", "purchasedPrice": 11.67, "securityId": "31617R308", "securityIdType": "CUSIP", "symbol": "FFFAX", "units": 823.148 }, { "averageCost": true, "cashAccount": false, "marketValue": 6.88, "positionType": "LONG", "purchasedPrice": 2.92, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 7 }, { "averageCost": false, "cashAccount": false, "marketValue": 1098, "positionType": "LONG", "securityId": "35086T109", "securityIdType": "CUSIP", "symbol": "FCPT", "units": 36 }, { "averageCost": false, "cashAccount": false, "marketValue": 3960.59, "positionType": "LONG", "securityId": "4812C1561", "securityIdType": "CUSIP", "symbol": "OLVAX", "units": 260.223 }, { "averageCost": false, "cashAccount": false, "marketValue": 87012, "positionType": "LONG", "securityId": "453836108", "securityIdType": "CUSIP", "symbol": "INDB", "units": 1200 }, { "averageCost": true, "cashAccount": false, "marketValue": 73937.6, "positionType": "LONG", "purchasedPrice": 7.5, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 440 }, { "averageCost": true, "cashAccount": false, "marketValue": 41.3, "positionType": "LONG", "purchasedPrice": 96.63, "securityId": "F00189120", "securityIdType": "CUSIP", "symbol": "AC:FR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 24332.07, "positionType": "LONG", "purchasedPrice": 77.79, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 109 }, { "averageCost": true, "cashAccount": false, "marketValue": 973.33, "positionType": "LONG", "purchasedPrice": 167.85, "securityId": "ZZ6200310", "securityIdType": "CUSIP", "symbol": "IBM:DE", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 18009, "positionType": "LONG", "purchasedPrice": 196.56, "securityId": "38141G104", "securityIdType": "CUSIP", "symbol": "GS", "units": 75 }, { "averageCost": true, "cashAccount": false, "marketValue": 580.99, "positionType": "LONG", "purchasedPrice": 228.43, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 18940, "positionType": "LONG", "purchasedPrice": 17.45, "securityId": "04010L103", "securityIdType": "CUSIP", "symbol": "ARCC", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 89.86, "positionType": "LONG", "purchasedPrice": 92.92, "securityId": "03073E105", "securityIdType": "CUSIP", "symbol": "ABC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 62985, "positionType": "LONG", "purchasedPrice": 1.03, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 1700 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 13.78, "securityId": "582411104", "securityIdType": "CUSIP", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 177.06, "positionType": "LONG", "purchasedPrice": 63.83, "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 97.5, "positionType": "LONG", "purchasedPrice": 0.15, "securityId": "CURDKK032", "securityIdType": "CUSIP", "symbol": "DKK", "units": 662.07 }, { "averageCost": true, "cashAccount": false, "marketValue": 485.36, "positionType": "LONG", "purchasedPrice": 65.06, "securityId": "670100205", "securityIdType": "CUSIP", "symbol": "NVO", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.98, "positionType": "LONG", "purchasedPrice": 9.23, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 903.24, "positionType": "LONG", "securityId": "478160104", "securityIdType": "CUSIP", "symbol": "JNJ", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 118775, "positionType": "LONG", "purchasedPrice": 142.91, "securityId": "697435105", "securityIdType": "CUSIP", "symbol": "PANW", "units": 500 }, { "averageCost": false, "cashAccount": false, "marketValue": -47880, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": -900 }, { "averageCost": true, "cashAccount": false, "marketValue": 15221.86, "positionType": "LONG", "purchasedPrice": 22.02, "securityId": "316200203", "securityIdType": "CUSIP", "symbol": "FDEGX", "units": 292.447 }, { "averageCost": true, "cashAccount": false, "marketValue": 152.96, "positionType": "LONG", "purchasedPrice": 71.2, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 7508.32, "positionType": "LONG", "purchasedPrice": 34.3, "securityId": "464286400", "securityIdType": "CUSIP", "symbol": "EWZ", "units": 167 }, { "averageCost": true, "cashAccount": false, "marketValue": 11730, "positionType": "LONG", "purchasedPrice": 6.4, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 56316, "positionType": "LONG", "purchasedPrice": 1.07, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": 1520 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 63.72, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 9076.36, "positionType": "LONG", "purchasedPrice": 34.05, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 103 }, { "averageCost": true, "cashAccount": false, "marketValue": 1226.9, "positionType": "LONG", "purchasedPrice": 4.44, "securityId": "893662106", "securityIdType": "CUSIP", "symbol": "TGL:CA", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 100, "securityId": "41421DQT6", "securityIdType": "CUSIP", "units": 50000 }, { "averageCost": true, "cashAccount": false, "marketValue": 8610.14, "positionType": "LONG", "purchasedPrice": 101.42, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 118.32 }, { "averageCost": true, "cashAccount": false, "marketValue": 510, "positionType": "LONG", "purchasedPrice": 2.41, "securityId": "95766K109", "securityIdType": "CUSIP", "symbol": "HIO", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7748, "positionType": "LONG", "purchasedPrice": 20.97, "securityId": "G4412G101", "securityIdType": "CUSIP", "symbol": "HLF", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": -111150, "positionType": "LONG", "purchasedPrice": 38.8, "securityId": "00206R102", "securityIdType": "CUSIP", "symbol": "T", "units": -3000 }, { "averageCost": true, "cashAccount": false, "marketValue": 936.08, "positionType": "LONG", "purchasedPrice": 46.96, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 4 }, { "averageCost": false, "cashAccount": false, "marketValue": 67076.8, "positionType": "LONG", "securityId": "928563402", "securityIdType": "CUSIP", "symbol": "VMW", "units": 452 }, { "averageCost": false, "cashAccount": false, "marketValue": -943.98, "positionType": "LONG", "securityId": "CUREUR026", "securityIdType": "CUSIP", "symbol": "EUR", "units": -857.77 }, { "averageCost": true, "cashAccount": false, "marketValue": 4.8, "positionType": "LONG", "purchasedPrice": 14.7, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 54808, "positionType": "LONG", "purchasedPrice": 268.35, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 2736, "positionType": "LONG", "purchasedPrice": 27.46, "securityId": "46435G474", "securityIdType": "CUSIP", "symbol": "FALN", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 174.88, "positionType": "LONG", "purchasedPrice": 7.89, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 23162.3, "positionType": "LONG", "purchasedPrice": 26.72, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 490 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 16.47, "securityId": "698354107", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 1479.62, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 167 }, { "averageCost": false, "cashAccount": false, "marketValue": 5320, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 985.74, "positionType": "LONG", "purchasedPrice": 1.53, "securityId": "CURGBP141", "securityIdType": "CUSIP", "symbol": "GBP", "units": 757.68 }, { "averageCost": true, "cashAccount": false, "marketValue": 1.6, "positionType": "LONG", "purchasedPrice": 0.11, "securityId": "CURSEK127", "securityIdType": "CUSIP", "symbol": "SEK", "units": 15.43 }, { "averageCost": true, "cashAccount": false, "marketValue": 3034.72, "positionType": "LONG", "purchasedPrice": 108.03, "securityId": "03027X100", "securityIdType": "CUSIP", "symbol": "AMT", "units": 13 }, { "averageCost": true, "cashAccount": false, "marketValue": 1134, "positionType": "LONG", "purchasedPrice": 21.71, "securityId": "219350105", "securityIdType": "CUSIP", "symbol": "GLW", "units": 40 }, { "averageCost": true, "cashAccount": false, "marketValue": 956.65, "positionType": "LONG", "purchasedPrice": 50.27, "securityId": "46429B333", "securityIdType": "CUSIP", "symbol": "GNMA", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 64.14, "securityId": "677862104", "securityIdType": "CUSIP", "units": 1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 94.1, "positionType": "LONG", "purchasedPrice": 18.57, "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 3339670.95, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 24255 }, { "averageCost": false, "cashAccount": false, "marketValue": 19379.36, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 121 }, { "averageCost": true, "cashAccount": false, "marketValue": -12285, "positionType": "LONG", "purchasedPrice": 8.38, "securityId": "00162Q866", "securityIdType": "CUSIP", "symbol": "AMLP", "units": -1500 }, { "averageCost": true, "cashAccount": false, "marketValue": 2296.7, "positionType": "LONG", "purchasedPrice": 200.2, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 2639.76, "positionType": "LONG", "purchasedPrice": 25.21, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 204 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 14.97, "securityId": "013817101", "securityIdType": "CUSIP", "units": 101 }, { "averageCost": true, "cashAccount": false, "marketValue": 497.7, "positionType": "LONG", "purchasedPrice": 24.22, "securityId": "L72967109", "securityIdType": "CUSIP", "symbol": "OEC", "units": 30 }, { "averageCost": true, "cashAccount": false, "marketValue": 5681.85, "positionType": "LONG", "purchasedPrice": 1785.19, "securityId": "09857L108", "securityIdType": "CUSIP", "symbol": "BKNG", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": -288, "positionType": "LONG", "purchasedPrice": 2.87, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": -100 }, { "averageCost": false, "cashAccount": false, "marketValue": 1306.48, "positionType": "LONG", "securityId": "78462F103", "securityIdType": "CUSIP", "symbol": "SPY", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 843.5, "positionType": "LONG", "purchasedPrice": 33.77, "securityId": "55616P104", "securityIdType": "CUSIP", "symbol": "M", "units": 50 }, { "averageCost": true, "cashAccount": false, "marketValue": -27404, "positionType": "LONG", "purchasedPrice": 268.73, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": -100 }, { "averageCost": false, "cashAccount": false, "marketValue": 12, "positionType": "LONG", "securityId": "131255101", "securityIdType": "CUSIP", "symbol": "CLWY", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 4825.57, "positionType": "LONG", "purchasedPrice": 78.16, "securityId": "78355Y508", "securityIdType": "CUSIP", "symbol": "RYTTX", "units": 31.985 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 33.79, "securityId": "723456109", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 26422.92, "positionType": "LONG", "purchasedPrice": 20.06, "securityId": "931142103", "securityIdType": "CUSIP", "symbol": "WMT", "units": 228 }, { "averageCost": true, "cashAccount": false, "marketValue": 43.25, "positionType": "LONG", "purchasedPrice": 43.51, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 243.66, "positionType": "LONG", "purchasedPrice": 174.36, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1792.45, "positionType": "LONG", "purchasedPrice": 86.62, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 168.306 }, { "averageCost": true, "cashAccount": false, "marketValue": 14098.72, "positionType": "LONG", "purchasedPrice": 0.93, "securityId": "CURCAD015", "securityIdType": "CUSIP", "symbol": "CAD", "units": 18615.95 }, { "averageCost": true, "cashAccount": false, "marketValue": 610.68, "positionType": "LONG", "purchasedPrice": 144.88, "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": 7 }, { "averageCost": true, "cashAccount": false, "marketValue": 21768.49, "positionType": "LONG", "purchasedPrice": 20.42, "securityId": "G12583111", "securityIdType": "CUSIP", "symbol": "BHMDF", "units": 810 }, { "averageCost": true, "cashAccount": false, "marketValue": 26926.54, "positionType": "LONG", "purchasedPrice": 83.26, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 127 }, { "averageCost": true, "cashAccount": false, "marketValue": 2411, "positionType": "LONG", "purchasedPrice": 33.35, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 25 }, { "averageCost": true, "cashAccount": false, "marketValue": 722.52, "positionType": "LONG", "purchasedPrice": 19.95, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 6 }, { "averageCost": true, "cashAccount": false, "marketValue": 136871.48, "positionType": "LONG", "purchasedPrice": 106.35, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 422 }, { "averageCost": true, "cashAccount": false, "marketValue": 33769.23, "positionType": "LONG", "purchasedPrice": 15.92, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1023 }, { "averageCost": false, "cashAccount": false, "marketValue": 448, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.4, "positionType": "LONG", "purchasedPrice": 12.81, "securityId": "06738C786", "securityIdType": "CUSIP", "symbol": "OILNF", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 27404, "positionType": "LONG", "purchasedPrice": 268.1, "securityId": "191098102", "securityIdType": "CUSIP", "symbol": "COKE", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 29.59, "positionType": "LONG", "purchasedPrice": 86.62, "securityId": "316184100", "securityIdType": "CUSIP", "symbol": "FMAGX", "units": 2.779 }, { "averageCost": true, "cashAccount": false, "marketValue": 1048.81, "positionType": "LONG", "purchasedPrice": 369.82, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 6.76 }, { "averageCost": true, "cashAccount": false, "marketValue": 11427, "positionType": "LONG", "purchasedPrice": 124.5, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 12.23, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 20 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 55.26, "securityId": "38259P706", "securityIdType": "CUSIP", "units": 121 }, { "averageCost": true, "cashAccount": false, "marketValue": 2880, "positionType": "LONG", "purchasedPrice": 12.36, "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 86085.1, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 1510 }, { "averageCost": true, "cashAccount": false, "marketValue": 81590, "positionType": "LONG", "purchasedPrice": 65.77, "securityId": "194693107", "securityIdType": "CUSIP", "symbol": "CIGI", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 433.6, "positionType": "LONG", "purchasedPrice": 47.99, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 11161, "positionType": "LONG", "purchasedPrice": 63.08, "securityId": "H57312649", "securityIdType": "CUSIP", "symbol": "NSRGF", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 7580.24, "positionType": "LONG", "purchasedPrice": 15.84, "securityId": "00089H106", "securityIdType": "CUSIP", "symbol": "ACSAY", "units": 1000 }, { "averageCost": true, "cashAccount": false, "marketValue": 343.16, "positionType": "LONG", "purchasedPrice": 336.91, "securityId": "64110L106", "securityIdType": "CUSIP", "symbol": "NFLX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2340.94, "positionType": "LONG", "purchasedPrice": 16.19, "securityId": "315910836", "securityIdType": "CUSIP", "symbol": "FNMIX", "units": 154.416 }, { "averageCost": false, "cashAccount": false, "marketValue": 4262056.26, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 30954 } ], "marginBalance": 5527282.17, "nickname": "Jim K's OrderMarking test", "transactions": [ { "accountId": "1747770816", "amount": 0, "category": "IA", "description": " PENDING DIST. RATE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 0, "status": "PENDING", "subCategory": "OC", "symbol": "T", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 7.38, "category": "IA", "description": "YOU SOLD ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -1, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38846 }, { "accountId": "1747770816", "amount": 833.88, "category": "IA", "description": "YOU SOLD ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -100, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38846 }, { "accountId": "1747770816", "amount": 8378.32, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -1000, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.38346 }, { "accountId": "1747770816", "amount": 4191.68, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00162Q866", "securityIdType": "CUSIP", "shares": -500, "status": "PENDING", "subCategory": "SL", "symbol": "AMLP", "transactionId": "927183825", "transactionTimestamp": 1580274000, "unitPrice": 8.39346 }, { "accountId": "1747770816", "amount": 1752.05, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -1752.05, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "578076429", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 1000, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "578076430", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -1000, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "578076431", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": 1000, "status": "POSTED", "subCategory": "BY", "symbol": "T", "transactionId": "578076432", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": -1000, "status": "POSTED", "subCategory": "SL", "symbol": "T", "transactionId": "578076433", "transactionTimestamp": 1580187600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -43.51, "category": "IA", "description": "YOU BOUGHT ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "BOOM", "transactionId": "578076459", "transactionTimestamp": 1580187600, "unitPrice": 42.5135 }, { "accountId": "1747770816", "amount": 116388.14, "category": "IA", "description": "YOU SOLD SHORT SALE ", "securityId": "00206R102", "securityIdType": "CUSIP", "shares": -3000, "status": "POSTED", "subCategory": "SL", "symbol": "T", "transactionId": "578076460", "transactionTimestamp": 1580187600, "unitPrice": 38.7985 }, { "accountId": "1747770816", "amount": 14347.81, "category": "IA", "description": "YOU SOLD REDEEMED TO COVER A SETTLED OBLIGATION ", "securityId": "31617H706", "securityIdType": "CUSIP", "shares": -14347.81, "status": "POSTED", "subCategory": "SL", "symbol": "FZCXX", "transactionId": "578076467", "transactionTimestamp": 1580187600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 2.04, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "407507666", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 851.5, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "203535403", "transactionTimestamp": 1579842000, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -16232.95, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535406", "transactionTimestamp": 1579842000, "unitPrice": 54 }, { "accountId": "1747770816", "amount": -16397.5, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535407", "transactionTimestamp": 1579842000, "unitPrice": 54.5485 }, { "accountId": "1747770816", "amount": -16406.5, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 300, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535408", "transactionTimestamp": 1579842000, "unitPrice": 54.5785 }, { "accountId": "1747770816", "amount": -15328.93, "category": "IA", "description": "YOU BOUGHT ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 280, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "203535409", "transactionTimestamp": 1579842000, "unitPrice": 54.6285 }, { "accountId": "1747770816", "amount": 851.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535410", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535411", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -246.76, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765321 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "203535433", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -851.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535434", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 851.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "203535439", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -216, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "ORCL", "transactionId": "1795934985", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 244.8, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "1795934986", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "1795934987", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "ORCL", "transactionId": "1795934988", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "YOU LOANED VS X09-243809-6 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "1795934989", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "ORCL", "transactionId": "1795935011", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0.7, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1825359856", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1.26, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "A", "transactionId": "1825359855", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "87612E106", "securityIdType": "CUSIP", "shares": 100, "status": "POSTED", "subCategory": "BY", "symbol": "TGT", "transactionId": "1825359854", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "87612E106", "securityIdType": "CUSIP", "shares": -100, "status": "POSTED", "subCategory": "SL", "symbol": "TGT", "transactionId": "1825359832", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-2 ", "securityId": "219350105", "securityIdType": "CUSIP", "shares": 40, "status": "POSTED", "subCategory": "BY", "symbol": "GLW", "transactionId": "1825359831", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243809-1 ", "securityId": "219350105", "securityIdType": "CUSIP", "shares": -40, "status": "POSTED", "subCategory": "SL", "symbol": "GLW", "transactionId": "1825359830", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1963, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -1963, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "173896077", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 1963, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896076", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1963, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896075", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -538.98, "category": "CH", "description": "CHECK ISSUED CHECK ISSUED DIV/INT 118765082 ", "shares": 0, "status": "POSTED", "subCategory": "CK", "transactionId": "173896053", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1963, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896051", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1963, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "173896046", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -299.99, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 299.99, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "618561120", "transactionTimestamp": 1579064400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 10.98, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "35086T109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FCPT", "transactionId": "618561119", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 513.79, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -513.79, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "1971685200", "transactionTimestamp": 1578978000, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -1534.72, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1534.72, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1204944576", "transactionTimestamp": 1578891600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": -192.5, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 192.5, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "994519513", "transactionTimestamp": 1578632400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 528, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "453836108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "INDB", "transactionId": "994519512", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -513.79, "category": "IA", "description": "YOU BOUGHT ", "securityId": "399473107", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "GRPN", "transactionId": "994519511", "transactionTimestamp": 1578632400, "unitPrice": 2.54346 }, { "accountId": "1747770816", "amount": 192.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519510", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -192.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519509", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1534.72, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519508", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1534.72, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519486", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -192.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519485", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 192.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "994519481", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 51.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "944955722", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 20, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -20, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "1497499723", "transactionTimestamp": 1578286800, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 16.24, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "464286400", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "EWZ", "transactionId": "1497499722", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 526.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "1497499700", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 465.5, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": -465.5, "status": "POSTED", "subCategory": "SL", "symbol": "FCASH", "transactionId": "94204296", "transactionTimestamp": 1578027600, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 190, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "302635107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FSK", "transactionId": "94204297", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -10, "category": "IA", "description": "YOU BOUGHT PERIODIC INVESTMENT ", "securityId": "316184100", "securityIdType": "CUSIP", "shares": 0.975, "status": "POSTED", "subCategory": "BY", "symbol": "FMAGX", "transactionId": "94204298", "transactionTimestamp": 1578027600, "unitPrice": 10.26 }, { "accountId": "1747770816", "amount": -10, "category": "IA", "description": "YOU BOUGHT PERIODIC INVESTMENT ", "securityId": "31617R308", "securityIdType": "CUSIP", "shares": 0.85, "status": "POSTED", "subCategory": "BY", "symbol": "FFFAX", "transactionId": "94204299", "transactionTimestamp": 1578027600, "unitPrice": 11.77 }, { "accountId": "1747770816", "amount": 465.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204300", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -465.5, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204322", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -465.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204323", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 465.5, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "94204328", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 18.88, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "55616P104", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "M", "transactionId": "1006690467", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1146, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "430697887", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 3.2, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "95766K109", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HIO", "transactionId": "430697888", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -0.63, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.63, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "430697889", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1747770816", "amount": 9.05, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "315910836", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FNMIX", "transactionId": "430697890", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 2.65, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "430697891", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 0.63, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "430697892", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1146, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697893", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697915", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": -1146, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697917", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 1146, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "430697922", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747770816", "amount": 400, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "04010L103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ARCC", "transactionId": "1705309601", "transactionTimestamp": 1577682000, "unitPrice": 0 } ] }, { "accountId": "425673116", "accountNumber": "*****6368", "accountType": "I", "availableCashBalance": 20.4, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 20.4, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 20.4, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 20.4 } ], "nickname": "Individual", "transactions": [ { "accountId": "425673116", "amount": -0.02, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.02, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "670143130", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "425673116", "amount": 0.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "670143129", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1110332638", "accountNumber": "*****7178", "accountType": "I", "availableCashBalance": 2364.6, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 34358.92, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 33.01, "positionType": "LONG", "purchasedPrice": 18.08, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 30487.96, "positionType": "LONG", "purchasedPrice": 109.85, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 94 }, { "averageCost": false, "cashAccount": false, "marketValue": 570.1, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 224.5, "positionType": "LONG", "purchasedPrice": 203.41, "securityId": "084670702", "securityIdType": "CUSIP", "symbol": "BRKB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 9.06, "positionType": "LONG", "purchasedPrice": 9.93, "securityId": "540132503", "securityIdType": "CUSIP", "symbol": "LCSCX", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 669.69, "positionType": "LONG", "purchasedPrice": 162.02, "securityId": "30303M102", "securityIdType": "CUSIP", "symbol": "FB", "units": 3 }, { "averageCost": false, "cashAccount": true, "marketValue": 2364.6, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 2364.6 } ], "nickname": "Individual", "transactions": [ { "accountId": "1110332638", "amount": -2.66, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 2.66, "status": "POSTED", "subCategory": "BY", "symbol": "FDRXX", "transactionId": "584391008", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1110332638", "amount": 2.66, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "316067107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FDRXX", "transactionId": "584391009", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "425669179", "accountNumber": "*****6325", "accountType": "I", "availableCashBalance": 0.06, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 42.65, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 42.59, "positionType": "LONG", "purchasedPrice": 12.49, "securityId": "316146315", "securityIdType": "CUSIP", "symbol": "FSGGX", "units": 3.215 }, { "averageCost": false, "cashAccount": true, "marketValue": 0.06, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 0.06 } ], "nickname": "Individual" }, { "accountId": "1783782214", "accountNumber": "*****2233", "accountType": "I", "availableCashBalance": 244874.14, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 3258187.12, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 233462.1, "positionType": "LONG", "securityId": "17275R102", "securityIdType": "CUSIP", "symbol": "CSCO", "units": 4962 }, { "averageCost": false, "cashAccount": false, "marketValue": 627.2, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 14 }, { "averageCost": true, "cashAccount": false, "marketValue": 17.53, "positionType": "LONG", "purchasedPrice": 18.33, "securityId": "40624Q203", "securityIdType": "CUSIP", "symbol": "HALL", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 3203.2, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 20 }, { "averageCost": false, "cashAccount": true, "fiAttributes": [ { "name": "SecurityIdType", "value": "Symbol" }, { "name": "SecurityId", "value": "FCASH" } ], "marketValue": 244874.14, "positionType": "LONG", "securityIdType": "CUSTOM", "units": 244874.14 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 149.64, "securityId": "413875105", "securityIdType": "CUSIP", "symbol": "0J3A:GB", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 2380168, "positionType": "LONG", "securityId": "68389X105", "securityIdType": "CUSIP", "symbol": "ORCL", "units": 44740 }, { "averageCost": true, "cashAccount": false, "marketValue": 2728.1, "positionType": "LONG", "purchasedPrice": 9.93, "securityId": "540132503", "securityIdType": "CUSIP", "symbol": "LCSCX", "units": 301.115 }, { "averageCost": true, "cashAccount": false, "marketValue": 28362, "positionType": "LONG", "purchasedPrice": 49.13, "securityId": "949746101", "securityIdType": "CUSIP", "symbol": "WFC", "units": 600 }, { "averageCost": false, "cashAccount": false, "marketValue": 311730.16, "positionType": "LONG", "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 2264 }, { "averageCost": true, "cashAccount": false, "marketValue": 51.76, "positionType": "LONG", "purchasedPrice": 39.75, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.8, "positionType": "LONG", "purchasedPrice": 11.85, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 109, "positionType": "LONG", "purchasedPrice": 64.29, "securityId": "405024100", "securityIdType": "CUSIP", "symbol": "HAE", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 3281, "positionType": "LONG", "purchasedPrice": 199.86, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 23.75, "positionType": "LONG", "purchasedPrice": 34.2, "securityId": "093671105", "securityIdType": "CUSIP", "symbol": "HRB", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 36309.07, "positionType": "LONG", "purchasedPrice": 54.53, "securityId": "254939200", "securityIdType": "CUSIP", "symbol": "DXQLX", "units": 1063.105 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 27.39, "securityId": "41165F101", "securityIdType": "CUSIP", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 2594.72, "positionType": "LONG", "purchasedPrice": 108.74, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 0.2, "positionType": "LONG", "purchasedPrice": 0.36, "securityId": "Q7318E103", "securityIdType": "CUSIP", "symbol": "PANRF", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 1157.28, "positionType": "LONG", "purchasedPrice": 33.09, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 12 }, { "averageCost": true, "cashAccount": false, "marketValue": 424.04, "positionType": "LONG", "purchasedPrice": 87.08, "securityId": "01609W102", "securityIdType": "CUSIP", "symbol": "BABA", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 2520.6, "positionType": "LONG", "purchasedPrice": 23.77, "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 15 }, { "averageCost": false, "cashAccount": false, "marketValue": 5701, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 841.28, "positionType": "LONG", "purchasedPrice": 22.41, "securityId": "172967424", "securityIdType": "CUSIP", "symbol": "C", "units": 11 } ], "nickname": "THE DELTA PILOTS DEFINED", "transactions": [ { "accountId": "1783782214", "amount": -0.04, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.04, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "613061137", "transactionTimestamp": 1580101200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 0.04, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "613061138", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -10737.6, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 10737.6, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "2001488484", "transactionTimestamp": 1579755600, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 10737.6, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "68389X105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "ORCL", "transactionId": "2001488485", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -1736.7, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1736.7, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1619806359", "transactionTimestamp": 1579669200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 1736.7, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "17275R102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CSCO", "transactionId": "1619806358", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -169.1, "category": "DV", "description": "REINVESTMENT REINVESTED @ $32.65AS OF 01/02/20 ", "securityId": "254939200", "securityIdType": "CUSIP", "shares": 5.179, "status": "POSTED", "subCategory": "RN", "symbol": "DXQLX", "transactionId": "1209213743", "transactionTimestamp": 1578027600, "unitPrice": 32.65 }, { "accountId": "1783782214", "amount": 169.1, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "254939200", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "DXQLX", "transactionId": "1209213744", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -0.26, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0.26, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "108318952", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 0.26, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "093671105", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "HRB", "transactionId": "108318953", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1783782214", "amount": -1.27, "category": "IA", "description": "YOU BOUGHT @ 1 ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 1.27, "status": "POSTED", "subCategory": "BY", "symbol": "FCASH", "transactionId": "1787079226", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1783782214", "amount": -28.8, "category": "DV", "description": "REINVESTMENT NET INT REINVEST ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 28.8, "status": "POSTED", "subCategory": "RN", "symbol": "FCASH", "transactionId": "1787079225", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1783782214", "amount": 1.27, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1787079224", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1783782214", "amount": 28.8, "category": "DV", "description": "CREDIT INTEREST INTEREST RECEIVED ", "securityId": "315994103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "IT", "symbol": "FCASH", "transactionId": "1787079223", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "357183466", "accountNumber": "*****0967", "accountType": "I", "availableCashBalance": 1015.09, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 1015.09, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 1015.09, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 1015.09 } ], "nickname": "Individual", "transactions": [ { "accountId": "357183466", "amount": -1.09, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 1.09, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "355677844", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "357183466", "amount": 1.09, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "355677843", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "91572249", "accountNumber": "*****5180", "accountType": "I", "availableCashBalance": 244358.45, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 258617.43, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": false, "marketValue": 8.86, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 66.02, "positionType": "LONG", "purchasedPrice": 33.01, "securityId": "060505104", "securityIdType": "CUSIP", "symbol": "BAC", "units": 2 }, { "averageCost": true, "cashAccount": false, "marketValue": 8964, "positionType": "LONG", "purchasedPrice": 15, "securityId": "G0684D107", "securityIdType": "CUSIP", "symbol": "ATH", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 4, "positionType": "LONG", "purchasedPrice": 1.46, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 5 }, { "averageCost": true, "cashAccount": false, "marketValue": 5216.1, "positionType": "LONG", "purchasedPrice": 100, "securityId": "792895G73", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": false, "cashAccount": true, "marketValue": 244358.45, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 244358.45 } ], "nickname": "My Brokerage", "transactions": [ { "accountId": "91572249", "amount": -261.27, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 261.27, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "27907035", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "91572249", "amount": 261.27, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "27907036", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1747769018", "accountNumber": "*****3825", "accountType": "I", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 2961187.46, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 704.96, "positionType": "LONG", "purchasedPrice": 27.74, "securityId": "086516101", "securityIdType": "CUSIP", "symbol": "BBY", "units": 8 }, { "averageCost": true, "cashAccount": false, "marketValue": 974.64, "positionType": "LONG", "purchasedPrice": 146.59, "securityId": "550021109", "securityIdType": "CUSIP", "symbol": "LULU", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 2912, "positionType": "LONG", "purchasedPrice": 46.15, "securityId": "26874R108", "securityIdType": "CUSIP", "symbol": "E", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 1560.96, "positionType": "LONG", "purchasedPrice": 87.06, "securityId": "855244109", "securityIdType": "CUSIP", "symbol": "SBUX", "units": 18 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 101.93, "securityId": "184541AT7", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 407.34, "positionType": "LONG", "purchasedPrice": 159.39, "securityId": "149123101", "securityIdType": "CUSIP", "symbol": "CAT", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": 1824, "positionType": "LONG", "purchasedPrice": 5.51, "securityId": "85207U105", "securityIdType": "CUSIP", "symbol": "S", "units": 400 }, { "averageCost": true, "cashAccount": false, "marketValue": 11906, "positionType": "LONG", "purchasedPrice": 61.03, "securityId": "92343V104", "securityIdType": "CUSIP", "symbol": "VZ", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 61.55, "securityId": "20030N200", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": -420055.77, "positionType": "LONG", "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": -723 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 17.79, "securityId": "25459Y447", "securityIdType": "CUSIP", "units": 1000 }, { "averageCost": false, "cashAccount": false, "marketValue": 3363.36, "positionType": "LONG", "securityId": "244199105", "securityIdType": "CUSIP", "symbol": "DE", "units": 21 }, { "averageCost": false, "cashAccount": false, "marketValue": 86262.59, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 557 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 15.4, "securityId": "24702R101", "securityIdType": "CUSIP", "units": 108 }, { "averageCost": true, "cashAccount": false, "marketValue": 116198, "positionType": "LONG", "purchasedPrice": 270.02, "securityId": "88160R101", "securityIdType": "CUSIP", "symbol": "TSLA", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 1233.59, "positionType": "LONG", "purchasedPrice": 377.31, "securityId": "78356A756", "securityIdType": "CUSIP", "symbol": "RYRUX", "units": 7.951 }, { "averageCost": false, "cashAccount": false, "marketValue": 8668.8, "positionType": "LONG", "securityId": "399473107", "securityIdType": "CUSIP", "symbol": "GRPN", "units": 3010 }, { "averageCost": true, "cashAccount": false, "marketValue": 3278.96, "positionType": "LONG", "purchasedPrice": 91.33, "securityId": "25459Y694", "securityIdType": "CUSIP", "symbol": "FAS", "units": 34 }, { "averageCost": true, "cashAccount": false, "marketValue": 5395.98, "positionType": "LONG", "purchasedPrice": 23.88, "securityId": "369604103", "securityIdType": "CUSIP", "symbol": "GE", "units": 417 }, { "averageCost": true, "cashAccount": false, "marketValue": 6517.97, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 1667 }, { "averageCost": true, "cashAccount": false, "marketValue": 3096.3, "positionType": "LONG", "purchasedPrice": 20.07, "securityId": "316345206", "securityIdType": "CUSIP", "symbol": "FBALX", "units": 123.605 }, { "averageCost": true, "cashAccount": false, "marketValue": 3313.83, "positionType": "LONG", "purchasedPrice": 5.86, "securityId": "87612E106", "securityIdType": "CUSIP", "symbol": "TGT", "units": 29 }, { "averageCost": false, "cashAccount": false, "marketValue": -1121380, "positionType": "LONG", "securityId": "75606N109", "securityIdType": "CUSIP", "symbol": "RP", "units": -19000 }, { "averageCost": false, "cashAccount": false, "marketValue": 627.2, "positionType": "LONG", "securityId": "635017106", "securityIdType": "CUSIP", "symbol": "FIZZ", "units": 14 }, { "averageCost": false, "cashAccount": false, "marketValue": 47025.3, "positionType": "LONG", "securityId": "165303108", "securityIdType": "CUSIP", "symbol": "CPK", "units": 490 }, { "averageCost": true, "cashAccount": false, "marketValue": 66.95, "positionType": "LONG", "purchasedPrice": 52.06, "securityId": "617480280", "securityIdType": "CUSIP", "symbol": "DRR", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 3.15, "securityId": "16951C108", "securityIdType": "CUSIP", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 5.89, "positionType": "LONG", "purchasedPrice": 2.43, "securityId": "90137F103", "securityIdType": "CUSIP", "symbol": "XXII", "units": 6 }, { "averageCost": false, "cashAccount": false, "marketValue": -17448, "positionType": "LONG", "securityId": "00846U101", "securityIdType": "CUSIP", "symbol": "A", "units": -200 }, { "averageCost": true, "cashAccount": false, "marketValue": 227.81, "positionType": "LONG", "purchasedPrice": 12.27, "securityId": "767754872", "securityIdType": "CUSIP", "symbol": "RAD", "units": 19 }, { "averageCost": true, "cashAccount": false, "marketValue": 488131.7, "positionType": "LONG", "purchasedPrice": 286.63, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": 1505 }, { "averageCost": true, "cashAccount": false, "marketValue": 2940, "positionType": "LONG", "purchasedPrice": 17.16, "securityId": "92334N103", "securityIdType": "CUSIP", "symbol": "VEOEY", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 2498.65, "positionType": "LONG", "purchasedPrice": 175.6, "securityId": "031162100", "securityIdType": "CUSIP", "symbol": "AMGN", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 750516, "positionType": "LONG", "purchasedPrice": 94.04, "securityId": "166764100", "securityIdType": "CUSIP", "symbol": "CVX", "units": 6800 }, { "averageCost": true, "cashAccount": false, "marketValue": 87.44, "positionType": "LONG", "purchasedPrice": 8.28, "securityId": "860897107", "securityIdType": "CUSIP", "symbol": "SFIX", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 702.06, "positionType": "LONG", "purchasedPrice": 62.64, "securityId": "437076102", "securityIdType": "CUSIP", "symbol": "HD", "units": 3 }, { "averageCost": true, "cashAccount": false, "marketValue": -3567.74, "positionType": "LONG", "purchasedPrice": 176.86, "securityId": "037833100", "securityIdType": "CUSIP", "symbol": "AAPL", "units": -11 }, { "averageCost": false, "cashAccount": false, "marketValue": 269.25, "positionType": "LONG", "securityId": "165167107", "securityIdType": "CUSIP", "symbol": "CHK", "units": 500 }, { "averageCost": true, "cashAccount": false, "marketValue": 126368, "positionType": "LONG", "purchasedPrice": 159.17, "securityId": "08862E109", "securityIdType": "CUSIP", "symbol": "BYND", "units": 1100 }, { "averageCost": true, "cashAccount": false, "marketValue": 77.88, "positionType": "LONG", "purchasedPrice": 4.91, "securityId": "82968B103", "securityIdType": "CUSIP", "symbol": "SIRI", "units": 11 }, { "averageCost": true, "cashAccount": false, "marketValue": 2173.93, "positionType": "LONG", "purchasedPrice": 100.42, "securityId": "78355E353", "securityIdType": "CUSIP", "symbol": "RYBOX", "units": 29.874 }, { "averageCost": true, "cashAccount": false, "marketValue": 101430.03, "positionType": "LONG", "purchasedPrice": 86.24, "securityId": "166764100", "securityIdType": "CUSIP", "symbol": "CVX", "units": 919 }, { "averageCost": true, "cashAccount": false, "marketValue": 3281, "positionType": "LONG", "purchasedPrice": 209.51, "securityId": "464287200", "securityIdType": "CUSIP", "symbol": "IVV", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 1302.03, "positionType": "LONG", "purchasedPrice": 5.49, "securityId": "654902204", "securityIdType": "CUSIP", "symbol": "NOK", "units": 333 }, { "averageCost": false, "cashAccount": false, "marketValue": 45608, "positionType": "LONG", "securityId": "191216100", "securityIdType": "CUSIP", "symbol": "KO", "units": 800 }, { "averageCost": false, "cashAccount": false, "marketValue": 17.72, "positionType": "LONG", "securityId": "345370860", "securityIdType": "CUSIP", "symbol": "F", "units": 2 }, { "averageCost": false, "cashAccount": false, "marketValue": 51571.71, "positionType": "LONG", "securityId": "74347R107", "securityIdType": "CUSIP", "symbol": "SSO", "units": 333 }, { "averageCost": true, "cashAccount": false, "marketValue": 5039.91, "positionType": "LONG", "purchasedPrice": 1.46, "securityId": "023111206", "securityIdType": "CUSIP", "symbol": "AMRN", "units": 261 }, { "averageCost": true, "cashAccount": false, "marketValue": 4325, "positionType": "LONG", "purchasedPrice": 48.56, "securityId": "23291C103", "securityIdType": "CUSIP", "symbol": "BOOM", "units": 100 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 7.97, "securityId": "767754104", "securityIdType": "CUSIP", "units": 458 }, { "averageCost": true, "cashAccount": false, "marketValue": 1858, "positionType": "LONG", "purchasedPrice": 1727.58, "securityId": "023135106", "securityIdType": "CUSIP", "symbol": "AMZN", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": -19157.2, "positionType": "LONG", "purchasedPrice": 215.88, "securityId": "433323102", "securityIdType": "CUSIP", "symbol": "HIFS", "units": -94 }, { "averageCost": true, "cashAccount": false, "marketValue": 853.9, "positionType": "LONG", "purchasedPrice": 72.99, "securityId": "25746U109", "securityIdType": "CUSIP", "symbol": "D", "units": 10 }, { "averageCost": true, "cashAccount": false, "marketValue": 3.2, "positionType": "LONG", "purchasedPrice": 5.1, "securityId": "708160106", "securityIdType": "CUSIP", "symbol": "JCP", "units": 4 }, { "averageCost": true, "cashAccount": false, "marketValue": 2391.59, "positionType": "LONG", "purchasedPrice": 11.53, "securityId": "85917L528", "securityIdType": "CUSIP", "symbol": "BMAAX", "units": 216.826 }, { "averageCost": true, "cashAccount": false, "marketValue": 2613356.2, "positionType": "LONG", "purchasedPrice": 23.79, "securityId": "459200101", "securityIdType": "CUSIP", "symbol": "IBM", "units": 18980 }, { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 101.42, "securityId": "300011LX9", "securityIdType": "CUSIP", "units": 5000 }, { "averageCost": true, "cashAccount": false, "marketValue": 32152.14, "positionType": "LONG", "purchasedPrice": 104.39, "securityId": "548661107", "securityIdType": "CUSIP", "symbol": "LOW", "units": 267 }, { "averageCost": true, "cashAccount": false, "marketValue": 268.4, "positionType": "LONG", "purchasedPrice": 43.59, "securityId": "617446448", "securityIdType": "CUSIP", "symbol": "MS", "units": 5 } ], "marginBalance": 3249664.4, "nickname": "Option Levelkamakshi", "transactions": [ { "accountId": "1747769018", "amount": 4.17, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "369604103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "GE", "transactionId": "2142235927", "transactionTimestamp": 1580101200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -40508.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1938263702", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 40508.33, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1938263703", "transactionTimestamp": 1579842000, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-243825-1 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "VZ", "transactionId": "764304020", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED AUTO JOURNAL 1 TO 2 VS X09-243825-2 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "VZ", "transactionId": "764304019", "transactionTimestamp": 1579755600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243825-2 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": 200, "status": "POSTED", "subCategory": "BY", "symbol": "VZ", "transactionId": "90631568", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "ZZ", "description": "JOURNALED VS X09-243825-1 ", "securityId": "92343V104", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "VZ", "transactionId": "90631567", "transactionTimestamp": 1579669200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 0, "category": "IA", "description": "ASSIGNED ", "securityId": "3980609QQ", "securityIdType": "CUSIP", "shares": 2, "status": "POSTED", "subCategory": "BY", "symbol": "A200117C82.5", "transactionId": "1208969088", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 16494.7, "category": "IA", "description": "YOU SOLD ASSIGNED CALLS AS OF 01-17-20 ", "securityId": "00846U101", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "A", "transactionId": "1208969084", "transactionTimestamp": 1579582800, "unitPrice": 82.5 }, { "accountId": "1747769018", "amount": -1161.27, "category": "IA", "description": "MARGIN INTEREST @ 8.825% AVG BAL 225,580DR", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1208969083", "transactionTimestamp": 1579582800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -22997.84, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1560832216", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 22997.84, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1560832217", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -38.54, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "433323102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "HIFS", "transactionId": "1116167142", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -56.4, "category": "IA", "description": "DIVIDEND CHARGED ", "securityId": "433323102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VC", "symbol": "HIFS", "transactionId": "1116167143", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 12.5, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "23291C103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BOOM", "transactionId": "1116167144", "transactionTimestamp": 1579064400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 474.6, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355294453", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -474.6, "category": "ZZ", "description": "JOURNALED JNL VS A/C TYPES ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1355294452", "transactionTimestamp": 1578891600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 474.6, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208781", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -474.6, "category": "ZZ", "description": "JOURNALED INCOME TO CASH A/C ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208782", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -37626.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208783", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 37626.06, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "740208784", "transactionTimestamp": 1578632400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 4, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "086516101", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "BBY", "transactionId": "1354389945", "transactionTimestamp": 1578373200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 198.45, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "165303108", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "CPK", "transactionId": "498121931", "transactionTimestamp": 1578286800, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -10538.61, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2089825955", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 10538.61, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "2089825956", "transactionTimestamp": 1578027600, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 89.41, "category": "DV", "description": "DIVIDEND RECEIVED SUBSTITUTE PAYMENT ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "988931163", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 149.56, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "74347R107", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SSO", "transactionId": "988931164", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 3.61, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "25459Y694", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "FAS", "transactionId": "1627300806", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": -11411.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1627300804", "transactionTimestamp": 1577768400, "unitPrice": 0 }, { "accountId": "1747769018", "amount": 11411.73, "category": "IA", "description": "SHORT VS MARGIN MARK TO MARKET ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "1627300803", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "88600589", "accountNumber": "*****8808", "accountType": "I", "availableCashBalance": 168356.65, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 205886.85, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 18412, "positionType": "LONG", "purchasedPrice": 80.02, "securityId": "003260106", "securityIdType": "CUSIP", "symbol": "PPLT", "units": 200 }, { "averageCost": true, "cashAccount": false, "marketValue": 19118.2, "positionType": "LONG", "purchasedPrice": 39.52, "securityId": "063679724", "securityIdType": "CUSIP", "symbol": "NRGD", "units": 400 }, { "averageCost": false, "cashAccount": true, "marketValue": 168356.65, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 168356.65 } ], "nickname": "DIA and INV OBJ", "transactions": [ { "accountId": "88600589", "amount": 200, "category": "IA", "description": "YOU SOLD @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": -200, "status": "POSTED", "subCategory": "SL", "symbol": "SPAXX", "transactionId": "867090404", "transactionTimestamp": 1579237200, "unitPrice": 1 }, { "accountId": "88600589", "amount": -100, "category": "X1", "description": "TRANSFERRED TO VS 135-837429-1 CURRENT CONTRIBUTION", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "867090405", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "88600589", "amount": -100, "category": "X1", "description": "TRANSFERRED TO VS 135-837429-1 PRIOR CONTRIBUTION ", "shares": 0, "status": "POSTED", "subCategory": "OC", "transactionId": "867090406", "transactionTimestamp": 1579237200, "unitPrice": 0 }, { "accountId": "88600589", "amount": -180.22, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 180.22, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "1658460465", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "88600589", "amount": 180.22, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1658460464", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "869738357", "accountNumber": "*****4600", "accountType": "I", "availableCashBalance": 5524.67, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 6162.23, "displayName": "Individual", "holdings": [ { "averageCost": false, "cashAccount": true, "marketValue": 5524.67, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 5524.67 }, { "averageCost": true, "cashAccount": false, "marketValue": 33.6, "positionType": "LONG", "purchasedPrice": 39.57, "securityId": "37045V100", "securityIdType": "CUSIP", "symbol": "GM", "units": 1 }, { "averageCost": true, "cashAccount": false, "marketValue": 99.84, "positionType": "LONG", "purchasedPrice": 88.65, "securityId": "654106103", "securityIdType": "CUSIP", "symbol": "NKE", "units": 1 }, { "averageCost": false, "cashAccount": false, "marketValue": 504.12, "positionType": "LONG", "securityId": "594918104", "securityIdType": "CUSIP", "symbol": "MSFT", "units": 3 } ], "nickname": "Individual", "transactions": [ { "accountId": "869738357", "amount": -0.25, "category": "IA", "description": "YOU BOUGHT MORNING TRADE @ 1 ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.25, "status": "POSTED", "subCategory": "BY", "symbol": "SPAXX", "transactionId": "1418058707", "transactionTimestamp": 1577941200, "unitPrice": 1 }, { "accountId": "869738357", "amount": 0.25, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "654106103", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "NKE", "transactionId": "1418058706", "transactionTimestamp": 1577941200, "unitPrice": 0 }, { "accountId": "869738357", "amount": -5.91, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 5.91, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "242805709", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "869738357", "amount": 5.91, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "242805710", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "1704025916", "accountNumber": "*****8990", "accountType": "I", "availableCashBalance": 14.41, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 26.99, "displayName": "Individual", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 6.58, "positionType": "LONG", "purchasedPrice": 6, "securityId": "33812L102", "securityIdType": "CUSIP", "symbol": "FIT", "units": 1 }, { "averageCost": false, "cashAccount": true, "marketValue": 20.41, "positionType": "LONG", "securityId": "31617H102", "securityIdType": "CUSIP", "symbol": "SPAXX", "units": 20.41 } ], "nickname": "Individual", "transactions": [ { "accountId": "1704025916", "amount": -6, "category": "IA", "description": "YOU BOUGHT ", "securityId": "33812L102", "securityIdType": "CUSIP", "shares": 1, "status": "POSTED", "subCategory": "BY", "symbol": "FIT", "transactionId": "874978129", "transactionTimestamp": 1580187600, "unitPrice": 5 }, { "accountId": "1704025916", "amount": -0.02, "category": "DV", "description": "REINVESTMENT REINVEST @ $1.000", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0.02, "status": "POSTED", "subCategory": "RN", "symbol": "SPAXX", "transactionId": "1664321594", "transactionTimestamp": 1577768400, "unitPrice": 1 }, { "accountId": "1704025916", "amount": 0.02, "category": "DV", "description": "DIVIDEND RECEIVED ", "securityId": "31617H102", "securityIdType": "CUSIP", "shares": 0, "status": "POSTED", "subCategory": "VP", "symbol": "SPAXX", "transactionId": "1664321593", "transactionTimestamp": 1577768400, "unitPrice": 0 } ] }, { "accountId": "668169523", "accountNumber": "*****2379", "accountType": "ROTH", "availableCashBalance": 0, "balanceAsOf": 1580333658, "balanceType": "ASSET", "currency": "USD", "currentValue": 0, "displayName": "ROTH IRA", "holdings": [ { "averageCost": true, "cashAccount": false, "marketValue": 0, "positionType": "LONG", "purchasedPrice": 23.67, "securityId": "1008524D1", "securityIdType": "CUSIP", "units": 5000 } ], "nickname": "ROTH IRA" }, { "accountId": "1078746320", "accountNumber": "*****6320", "accountType": "401K", "balanceAsOf": 1580187600, "currency": "USD", "currentValue": 0, "displayName": "Defined Contributions", "nickname": "NATIONWIDE SAVINGS PLAN" } ] } }
{         "transactions": {             "InvestmentTransaction": [               {                 "accountId": "1377569312",                 "amount": -10.82,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 1,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 10.82,                 "subCategory": "BY",                 "symbol": "FCASH",                 "transactionId": "1378762715",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 10.82,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "FZFXX",                 "transactionId": "1378762716",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -0.11,                 "category": "DV",                 "commission": 0,                 "description": "REINVESTMENT CASH (315994103) (Cash)",                 "fees": 0,                 "investmentTransactionType": "REINVESTOFINCOME",                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 1,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0.11,                 "subCategory": "RN",                 "symbol": "FCASH",                 "transactionId": "1378762717",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0.11,                 "category": "DV",                 "commission": 0,                 "description": "INTEREST EARNED CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-30T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "IT",                 "symbol": "FCASH",                 "transactionId": "1378762718",                 "transactionTimestamp": "2019-09-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED FROM FZFXX TO FCASH FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -9043.64,                 "subCategory": "SL",                 "symbol": "FZFXX",                 "transactionId": "1103351732",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED TO FCASH IS LIQUID CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 9043.64,                 "subCategory": "BY",                 "symbol": "FCASH",                 "transactionId": "1103351733",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "commission": 0,                 "description": " EXCHANGED TO FCASH CASH (315994103) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-09-24T04:00:00Z",                 "price": 0,                 "securityId": "315994103",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "OC",                 "symbol": "FCASH",                 "transactionId": "1103351734",                 "transactionTimestamp": "2019-09-24T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -6.87,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 6.87,                 "subCategory": "BY",                 "symbol": "FZFXX",                 "transactionId": "1441520567",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -7.08,                 "category": "DV",                 "commission": 0,                 "description": "REINVESTMENT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "REINVESTOFINCOME",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 7.08,                 "subCategory": "RN",                 "symbol": "FZFXX",                 "transactionId": "1441520566",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 7.08,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "FZFXX",                 "transactionId": "1441520565",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 6.87,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-08-30T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "1441520564",                 "transactionTimestamp": "2019-08-30T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 45.4,                 "category": "IA",                 "commission": 0,                 "description": "REDEMPTION FROM CORE ACCOUNT FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "PURCHASETOCLOSE",                 "postedTimestamp": "2019-08-26T04:00:00Z",                 "price": 1,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -45.4,                 "subCategory": "SL",                 "symbol": "FZFXX",                 "transactionId": "65853201",                 "transactionTimestamp": "2019-08-26T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -45.4,                 "category": "IA",                 "commission": 19.95,                 "description": "YOU BOUGHT ABN AMRO BK NV MTN SR SB BOND 144A 2.65000% 01/19/2021 ISIN #US00084DAQ34 SEDOL #BF5G7R3 (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-26T04:00:00Z",                 "price": 1,                 "securityId": "00084DAQ3",                 "securityIdType": "CUSIP",                 "securityType": "DEBT",                 "shares": 2000,                 "subCategory": "BY",                 "transactionId": "65853199",                 "transactionTimestamp": "2019-08-26T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED TO FZFXX IS LIQUID FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 9075.09,                 "subCategory": "BY",                 "symbol": "FZFXX",                 "transactionId": "1383711025",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "commission": 0,                 "description": " EXCHANGED TO FZFXX FIDELITY TREASURY MONEY MARKET FUND (FZFXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "316341304",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "OC",                 "symbol": "FZFXX",                 "transactionId": "1383711024",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 0,                 "category": "ZZ",                 "commission": 0,                 "description": "TRANSFERRED FROM SPAXX TO FZFXX FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-08-15T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": -9075.09,                 "subCategory": "SL",                 "symbol": "SPAXX",                 "transactionId": "1383711023",                 "transactionTimestamp": "2019-08-15T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -15.34,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-07-31T04:00:00Z",                 "price": 1,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 15.34,                 "subCategory": "BY",                 "symbol": "SPAXX",                 "transactionId": "491872566",                 "transactionTimestamp": "2019-07-31T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 15.34,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-07-31T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "491872565",                 "transactionTimestamp": "2019-07-31T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": -15.03,                 "category": "IA",                 "commission": 0,                 "description": "PURCHASE INTO CORE ACCOUNT FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "postedTimestamp": "2019-06-28T04:00:00Z",                 "price": 1,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 15.03,                 "subCategory": "BY",                 "symbol": "SPAXX",                 "transactionId": "1016217473",                 "transactionTimestamp": "2019-06-28T04:00:00Z"               },               {                 "accountId": "1377569312",                 "amount": 15.03,                 "category": "DV",                 "commission": 0,                 "description": "DIVIDEND RECEIVED FIDELITY GOVERNMENT MONEY MARKET (SPAXX) (Cash)",                 "fees": 0,                 "investmentTransactionType": "DIV",                 "postedTimestamp": "2019-06-28T04:00:00Z",                 "price": 0,                 "securityId": "31617H102",                 "securityIdType": "CUSIP",                 "securityType": "MUTUALFUND",                 "shares": 0,                 "subCategory": "VP",                 "symbol": "SPAXX",                 "transactionId": "1016217472",                 "transactionTimestamp": "2019-06-28T04:00:00Z"               }             ]           }         }

testing authentication happy path tests

“Happy path” tests

Test caseTask(s)Expected result(s)
Successful creation of OAuth linkDirect end-user to the Mikomo login.End-user goes from your app to the provider login screen.
Valid loginGo through Mikomo’s authentication flow and reach the account selection screen.Successfully arrive at the account selection screen displaying all the user’s accounts.
Successful account selectionSelect the desired financial accounts.End-user’s accounts are selected without error.
Successful redirect to expected redirect_uriThe app/browser takes user to the success page.Successfully arrive at your app’s redirect URI.
Successful retrieval of authentication codeStore the authentication code.Authentication code is used for next step, retrieving tokens.
Successful token validationUse the Token endpoint to request refresh and ID tokens.Valid refresh_token and id_token tokens are returned. These tokens are associated with the Mikomo end-user who logged-in and the specified sandbox app, provider (Mikomo), and selected accounts.

“Sad path” tests

Test caseTask(s)Expected result(s)
Login failure (invalid connector)Provide an invalid providerId in the auth URL for connector (e.g. Mikomoo vs Mikomo).HTTP 400: Bad Request
Login failure (no connector)Provide connector without a value.HTTP 403: Forbidden

Possible: HTTP 200: OK. When this occurs, an Akoya login screen may appear and will not be usable for your end-user.
Login failure (invalid redirect_uri)1. Provide an empty redirect_uri.

2. Provide an incorrect redirect_uri.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid client_id)1. Provide an empty client_id.

2. Provide an incorrect client_id.
(Both tasks): HTTP 400: Bad Request
Login failure (invalid response_type)Provide an empty response_type.HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_requests
Login failure (invalid scope)1. Provide an empty scope.

2. scope missing openid.
HTTP 403: Forbidden or HTTP 200: OK with error parameter in URL:

<your redirect_uri>callback?error=invalid_scope
Login failure (invalid scope)scope missing offline_access.End-user login will be successful.

Initial token endpoint response will be missing refresh_token
Login failure (incorrect username/password)Enter incorrect user credentials.HTTP 401: Unauthorized

Receive an error message in the UI that the end-user’s username and/or password is incorrect.

hub manual my apps

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


testing tokens

🚧

Token required!

Please obtain a token prior to completing this section.

"Happy path" tests

Test caseTask(s)Expected result(s)
Refresh an ID tokenCall the /token endpoint with the refresh_token.Receive valid new ID and refresh tokens.
Refresh an expired ID token1. Identify an id_token older than 24 hours.

2. Call the /token endpoint with the refresh_token.
Receive valid new ID and refresh tokens.
Revoke an ID token1. Call the /token/revoke endpoint.

2. Attempt a call to the /accounts endpoint.
1. HTTP 200: OK (empty payload)

2. HTTP 401: Unauthorized

Error payload:
{
"code": 602,
"message": "Customer not authorized"
}

“Sad path” tests

Please review our error codes documentation.

Test caseTask(s)Expected result(s)
Refresh a used refresh_token.Test a token refresh call with a refresh_token that has already been claimed.HTTP 400: Bad Request

Error payload:
{
"error": "invalid_request",
   "error_description": "Refresh token is invalid or has 
 already been claimed by another client."
}
Refresh with invalid client_secret.Try a token refresh with an invalid client_secret.HTTP 401: Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Revoke with invalid client_secret.1. Try the revoke token endpoint without a client_secret.

2. Try the revoke token endpoint with an incorrect client_secret.
1. HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request"
}


2. HTTP 401: Unauthorized

Error payload:
{
   "error": "unauthorized_client"
}
Obtain a token with invalid authorization code.1. Use the /token endpoint with an expired code.

2. Use the /token endpoint with an incorrect code.
(both tasks) HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "Invalid or expired code parameter."
}
Obtain a token with an incorrect redirect_URI.Use /token endpoint with an incorrect redirect_URI.HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "redirect_uri did not match URI 
from initial request."
}
Obtain a token with a missing grant_type field.1. Use /token endpoint with a missing grant_type field.

2. Use /token endpoint with an incorrect grant_type field.
HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_grant"
}
Obtain a token with an incorrect client_id.1. Use /token endpoint with an incorrect clientId.

2. Use /token endpoint with an incorrect client_secret.
1. HTTP 401: invalid_client

2. HTTP 401 Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Refresh a token without a refresh_token.Use /token endpoint with grant_type=refresh_token without including the current refresh_token.HTTP 400 Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "No refresh token in request."
}

getting started 4 test token flow

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

coming soon search for statements

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


data access network

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

coming soon account number tokenization

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


account info all account categories

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

troubleshooting

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


intro to fdx benefits for data recipients

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


data elements fdx v4 contribution

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

implementation steps obtain data

The following steps will guide you through creation of a test app in the Akoya Sandbox.

Authenticate & select accounts

TaskDescription
Review technical requirements.See: Requirements.
Register with Akoya for Sandbox access.To register, you must provide Akoya with a redirect URI for your use with your Sandbox test app. Akoya will provide you with a client Id and secret for your app.
Securely store client_id and secretEvery App has a unique client Id and secret. They must be treated as secure information and stored securely.
UX - Provider popup or redirectIntegrate into your existing provider selection UI or build popup/ redirect flow for the end-user to select the data provider(s) they'd like to connect with your app. Upon end-user selection, initiate consent and authentication via Akoya to the provider. See: OAuth implementation styles.
Use Sandbox data for implementation and testingThe Akoya Sandbox includes a mock data provider (Mikomo Financial) with several test users that may be used for end-to-end implementation and testing. Use these test accounts for the remaining implementation steps. See: Introduction to Sandbox.
Authorization GrantAfter authentication and authorization, Akoya will return the end-user to your redirect URI with an authorization grant code in the URL with the parameter “code=”. Use this authorization code to request a set of tokens for this end-user. See: Authorization Code.
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
Id and refresh token generationExchange authorization code for ID and Refresh Token See: Token API reference and the token explainer.
Store TokenUse your current secure token storage or implement a way to store each end-user's unique tokens.
Token RevocationImplement a way for the end-user to remove access to their data provider account(s). See Revoke Token.
Error CasesCode for Authorization or Token errors. Develop UX for errors, timeouts, and reauthentication. See Authentication errors and Token API errors.
Validate authenticationValidate UX for account selection, consent, ID/Refresh Token for new and existing users.

Obtain data

TaskDescription
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
AccountsUsing the id_token retrieved in the Id and refresh token step above for a test user, make a call for data. See: API Docs - Accounts reference.
TransactionsUsing the id_token retrieved in the Id and refresh token step above for a test user, and the account Id retrieved in the Accounts step above, make a call for transaction data. See: Akoya API v2 - Transactions reference.
Error CasesCode for Akoya API v2 errors. Develop UX for errors, timeouts, and reauthentication. See Errors.
Validate DataValidate use and display of data in your own systems and UI.

postman collection change log

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

balances loan accounts

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

unique keys and values

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


postman collection environment parameters

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

data elements fdx v4 depositaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

requirements

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


mikomo mikomo 9

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

testing tokens

🚧

Token required!

Please obtain a token prior to completing this section.

"Happy path" tests

Test caseTask(s)Expected result(s)
Refresh an ID tokenCall the /token endpoint with the refresh_token.Receive valid new ID and refresh tokens.
Refresh an expired ID token1. Identify an id_token older than 24 hours.

2. Call the /token endpoint with the refresh_token.
Receive valid new ID and refresh tokens.
Revoke an ID token1. Call the /token/revoke endpoint.

2. Attempt a call to the /accounts endpoint.
1. HTTP 200: OK (empty payload)

2. HTTP 401: Unauthorized

Error payload:
{
"code": 602,
"message": "Customer not authorized"
}

“Sad path” tests

Please review our error codes documentation.

Test caseTask(s)Expected result(s)
Refresh a used refresh_token.Test a token refresh call with a refresh_token that has already been claimed.HTTP 400: Bad Request

Error payload:
{
"error": "invalid_request",
   "error_description": "Refresh token is invalid or has 
 already been claimed by another client."
}
Refresh with invalid client_secret.Try a token refresh with an invalid client_secret.HTTP 401: Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Revoke with invalid client_secret.1. Try the revoke token endpoint without a client_secret.

2. Try the revoke token endpoint with an incorrect client_secret.
1. HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request"
}


2. HTTP 401: Unauthorized

Error payload:
{
   "error": "unauthorized_client"
}
Obtain a token with invalid authorization code.1. Use the /token endpoint with an expired code.

2. Use the /token endpoint with an incorrect code.
(both tasks) HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "Invalid or expired code parameter."
}
Obtain a token with an incorrect redirect_URI.Use /token endpoint with an incorrect redirect_URI.HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "redirect_uri did not match URI 
from initial request."
}
Obtain a token with a missing grant_type field.1. Use /token endpoint with a missing grant_type field.

2. Use /token endpoint with an incorrect grant_type field.
HTTP 400: Bad Request

Error payload:
{
   "error": "invalid_grant"
}
Obtain a token with an incorrect client_id.1. Use /token endpoint with an incorrect clientId.

2. Use /token endpoint with an incorrect client_secret.
1. HTTP 401: invalid_client

2. HTTP 401 Unauthorized

Error payload:
{
   "error": "invalid_client",
   "error_description": "Invalid client credentials."
}
Refresh a token without a refresh_token.Use /token endpoint with grant_type=refresh_token without including the current refresh_token.HTTP 400 Bad Request

Error payload:
{
   "error": "invalid_request",
   "error_description": "No refresh token in request."
}

mikomo users

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Users

Model response schemas are included for your reference as well as several test
users with details listed below.

Data updated: January 2021

Transaction dates: from 2019-06-28T04:00:00Z to 2020-11-30T05:00:00Z

useraccount typestransactions
accountType (Number of transactions): accountId
mikomo_1
8 accounts
Investment: I, TODIIndividual (20): 1755209824
mikomo_2
8 accounts
Investment: HSA, I, TODIHSA (20): 474362798
mikomo_3
38 accounts
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312
mikomo_5
3 accounts
Investment: J, HSA, ROTHHSA (8): 1221963501
mikomo_6
10 accounts
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone
mikomo_7
5 accounts
Investment: 401(k) PLAN
Insurance: J
Loan: COMMERCIALLOAN
LoC: CREDITCARD
Deposit: CHECKING
401 (1): 1222577818
Insurance (1): 1254778531
COMMERCIALLOAN (1): 1316072226
CREDITCARD (1): 1417522980
CHECKING (1): 1602364511
mikomo_9
1 account
Deposit: CHECKING
includes payment-networks and customers data
CHECKING (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
mikomo_10
6 accounts
Deposit: Checking, Savings, CD
Investment: College Savings, Brokerage
includes payment-networks and customers data
CHECKING (1360): g833202fb0866d0ad83472c429
College Savings (22): 839502593
Brokerage (4): 5426873
Savings (4): 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d

mikomo 7 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

{ "accounts": [ { "investmentAccount": { "accountId": "1222577818", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "401(k) PLAN", "allowedCheckWriting": true, "allowedOptionTrade": true, "availableCashBalance": 985, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceList": [ { "balanceDate": "2020-11-30T05:00:00Z", "balanceDescription": "string", "balanceName": "string", "balanceType": "string", "balanceValue": 760, "currency": { "currencyCode": "string", "currencyRate": 621, "originalCurrencyCode": "string" } } ], "balanceType": "string", "brokerId": "string", "calendaryearFor401K": "2020-11-30T05:00:00Z", "contribution": [ { "employeeAfterTaxAmount": 66, "employeeAfterTaxPercentage": 984, "employeeDeferPreTaxAmount": 968, "employeeDeferPreTaxPercentage": 302, "employeePreTaxAmount": 900, "employeePreTaxPercentage": 285, "employeeYearToDate": 1000, "employerMatchAmount": 590, "employerMatchPercentage": 104, "employerYearToDate": 1000, "rolloverContributionAmount": 282, "rolloverContributionPercentage": 773, "securityId": "string", "securityIdType": "string" } ], "currency": { "currencyCode": "string", "currencyRate": 672, "originalCurrencyCode": "string" }, "currentValue": 797, "dailyChange": 51, "description": "string", "employerName": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "holdings": [ { "assetClasses": [ { "assetClass": "string", "percent": 897 } ], "averageCost": true, "cashAccount": true, "changeInPrice": 714, "currency": { "currencyCode": "string", "currencyRate": 846, "originalCurrencyCode": "string" }, "currentUnitPrice": 52, "currentUnitPriceDate": "2020-11-30T05:00:00Z", "description": "string", "expirationDate": "2020-11-30T05:00:00Z", "faceValue": 227, "fiAssetClasses": [ { "assetClass": "string", "percent": 924 } ], "fiAttributes": [ { "name": "string", "value": "string" } ], "heldInAccount": "string", "holdingId": "string", "holdingName": "string", "holdingSubType": "string", "holdingType": "string", "inv401kSurce": "string", "marketValue": 351, "originalPurchaseDate": "2020-11-30T05:00:00Z", "positionType": "string", "purchasedPrice": 703, "rate": 885, "securityId": "string", "securityIdType": "string", "symbol": "string", "taxLots": [ { "costBasis": 381, "currentValue": 120, "originalPurchaseDate": "2020-11-30T05:00:00Z", "postionType": "string", "purchasedPrice": 194, "quantity": 969 } ], "units": 953 } ], "interestRate": 312, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "investmentLoans": [ { "currentLoanBalance": 736, "dateAsOf": "2020-11-30T05:00:00Z", "initialLoanBalance": 8, "loanDescription": "string", "loanId": "string", "loanInterestToDate": "800", "loanMaturityDate": "2020-11-30T05:00:00Z", "loanNextPaymentDate": "2020-11-30T05:00:00Z", "loanPaymentAmount": 133, "loanPaymentFrequency": "string", "loanPaymentInitial": 543, "loanPaymentsRemaining": 64, "loanRate": 151, "loanStartDate": "2020-11-30T05:00:00Z", "loanTotalProjectedInterest": 381 } ], "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "margin": true, "marginBalance": 1, "micrNumber": "string", "nickname": "Investment Account", "openOrders": [ { "description": "string", "inv401kSource": "string", "limitPrice": 234, "orderDate": "2020-11-30T05:00:00Z", "orderDuration": "string", "orderId": "string", "orderType": "string", "securityId": "string", "securityIdType": "string", "stopPrice": 111, "subAccount": "string", "symbol": "string", "unitPrice": 840, "units": 76, "unitType": "string" } ], "parentAccountId": "string", "pensionSource": [ { "amount": 152, "asOfDate": "2020-11-30T05:00:00Z", "displayName": "string", "frequency": "string", "paymentOption": "string", "startDate": "2020-11-30T05:00:00Z" } ], "percentageChange": 379, "planId": "string", "priorInterestRate": 857, "productName": "string", "rolloverAmount": 194, "routingTransitNumber": "string", "shortBalance": 138, "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true, "vesting": [ { "otherVestAmount": 563, "otherVestPercentage": 618, "strikePrice": 515, "symbol": "string", "unVestedBalance": 185, "unVestedQuantity": 648, "vestedBalance": 76, "vestedQuantity": 923, "vestingDate": "2020-11-30T05:00:00Z", "vestingPercentage": 799 } ] } }, { "annuityAccount": { "annualIncrease": 269, "annualIncreaseType": "string", "annuityProductType": "string", "annuityValueBasis": "string", "netPresentValue": 149, "paymentAmount": 309, "paymentEndDate": "2020-11-30T05:00:00Z", "paymentFrequency": "string", "paymentStartDate": "2020-11-30T05:00:00Z", "periodCertainGuarantee": "string", "totalPaymentCount": 483 } }, { "insuranceAccount": { "accountCategory": "string", "accountId": "1254778531", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "J", "balanceType": "string", "bills": [ { "autoPayAmount": 908, "autoPayDate": "2020-11-30T05:00:00Z", "autoPayEnabled": true, "dueDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 143, "lastPaymentDate": "2020-11-30T05:00:00Z", "minimumPaymentDue": 973, "pastDueAmount": 520, "statementBalance": 16, "statementDate": "2020-11-30T05:00:00Z", "totalPaymentDue": 14 } ], "currency": { "currencyCode": "string", "currencyRate": 295, "originalCurrencyCode": "string" }, "description": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestRate": 698, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "micrNumber": "string", "nickname": "Insurance Account", "parentAccountId": "string", "policyCoverageAmount": 156, "policyEndDate": "2020-11-30T05:00:00Z", "policyPremium": 799, "policyPremiumTerm": "string", "policyStartDate": "2020-11-30T05:00:00Z", "priorInterestRate": 800, "productName": "string", "routingTransitNumber": "string", "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "loanAccount": { "accountId": "1316072226", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "COMMERCIALLOAN", "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "compoundingPeriod": "string", "currency": { "currencyCode": "string", "currencyRate": 761, "originalCurrencyCode": "string" }, "description": "string", "error": { "code": "string", "message": "string" }, "escrowBalance": 223, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestPaidYearToDate": 922, "interestRate": 922, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 734, "lastPaymentDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "loanTerm": 532, "maturityDate": "2020-11-30T05:00:00Z", "micrNumber": "string", "nextPaymentAmount": 956, "nextPaymentDate": "2020-11-30T05:00:00Z", "nickname": "Loan Account", "originalPrincipal": 60, "originatingDate": "2020-11-30T05:00:00Z", "parentAccountId": "string", "paymentFrequency": "string", "payOffAmount": 396, "principalBalance": 419, "priorInterestRate": 391, "productName": "string", "routingTransitNumber": "string", "status": "string", "totalNumberOfPayments": 503, "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "locAccount": { "accountId": "1417522980", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "CREDITCARD", "advancesApr": 930, "availableCash": 963, "availableCredit": 403, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "cashAdvanceLimit": 747, "creditLine": 638, "currency": { "currencyCode": "string", "currencyRate": 802, "originalCurrencyCode": "string" }, "currentBalance": 617, "currentRewardsBalance": 200, "description": "string", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "financeCharges": 978, "interestRate": 981, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "lastActivityDate": "2020-11-30T05:00:00Z", "lastPaymentAmount": 921, "lastPaymentDate": "2020-11-30T05:00:00Z", "lastStmtBalance": 115, "lastStmtDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "micrNumber": "string", "minimumPaymentAmount": 314, "nextPaymentAmount": 717, "nextPaymentDate": "2020-11-30T05:00:00Z", "nickname": "LoC Account", "parentAccountId": "string", "pastDueAmount": 956, "pointsAccrued": 235, "pointsRedeemed": 160, "principalBalance": 189, "priorInterestRate": 901, "productName": "string", "purchasesApr": 53, "routingTransitNumber": "string", "status": "string", "transactionsIncluded": false, "transferIn": true, "transferOut": true } }, { "depositAccount": { "accountId": "1602364511", "accountNumber": "string", "accountNumberDisplay": "string", "accountType": "CHECKING", "annualPercentageYield": 734, "availableBalance": 720, "balanceAsOf": "2020-11-30T05:00:00Z", "balanceType": "string", "currency": { "currencyCode": "string", "currencyRate": 516, "originalCurrencyCode": "string" }, "currentBalance": 281, "description": "This is a deposit account", "error": { "code": "string", "message": "string" }, "fiAttributes": [ { "name": "string", "value": "string" } ], "interestRate": 757, "interestRateAsOf": "2020-11-30T05:00:00Z", "interestRateType": "string", "interestYtd": 170, "lastActivityDate": "2020-11-30T05:00:00Z", "lineOfBusiness": "string", "maturityDate": "2020-11-30T05:00:00Z", "micrNumber": "string", "nickname": "Deposit Account", "openingDayBalance": 242, "parentAccountId": "string", "priorInterestRate": 865, "productName": "string", "routingTransitNumber": "string", "status": "string", "term": 890, "transactionsIncluded": false, "transferIn": true, "transferOut": true } } ] }

data elements fdx v4 loanaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

token flow consent flow

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


coming soon request statement

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


pagination response

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


project plan content

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

coming soon data recipient hub update

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


project plan go live

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

token flow example with expired tokens

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


mikomo model response holding

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

transactions all account categories

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

pagination parameters

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


data elements fdx v4 transaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

products

Products

Akoya products include Account info, Balances, Investments, Payments, Transactions, Customers, and Statements. These products allow you to retrieve the data you need for your use case.

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

ProductDescriptionEndpoint
Account infoBasic account information (included with all other products)./accounts-info/v2/{providerId}
BalancesBalances and rates of bank accounts, credit cards, loans, investments, and more./balances/v2/{providerId}
InvestmentsDetailed information on underlying holdings and positions of investment accounts./accounts/v2/{providerId}/
TransactionsUp to two years of transaction data across account types, including amounts, dates, and descriptions./transactions/v2/{providerId}/{accountId}
CustomersVerified contact information on file, including name, email, address, and phone number./customers/v2/{providerId}/current
PaymentsIdentifiers necessary to make ACH and RTP payments./payments/v2/{providerId}/{accountId}/payment-networks
StatementsList of financial institution statements available to download via PDF​/statements/{version}/{providerId}/{accountId}
/statements/{version}/{providerId}/{accountId}/{statementId}

Use cases

Payment Enablement​Account Opening​Lending & ​Credit Enhancement​Personal Financial ​ManagementWealth Management & ​InvestingBusiness Financial ​Management
Balances

☑️

☑️

☑️

☑️

☑️

☑️

Transactions

☑️

☑️

☑️

☑️

Investments

☑️

Payments

☑️

☑️

Customers

☑️

☑️

☑️

Statements

☑️

☑️

* All use cases include the account info product

  • Account opening: Enable instant account opening and funding without micro-deposits.
  • Business financial management: Offer businesses the ability to aggregate their financial accounts in one place.
  • Lending & credit enhancement: Access bank or brokerage data to better inform lending decisions.
  • Payment enablement: Authorize account-to-account or person-to-person payments with instant account authentication. Payment enablement uses the payments product to request an end-user's payment account identifiers. This is not a payment initiation request.
  • Personal finance management (PFM): Provide users the ability to aggregate their financial accounts in one place.
  • Wealth management & investing: Give users and/or financial advisors the ability to collate investments, assets, and other held-away account information for one sweeping financial picture.

data elements fdx v4 locaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

mikomo mikomo 2

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo model response properties 4

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

getting started 5 request tokens

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

pagination example without pagination

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


account info example response

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

postman collection

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

oauth implementation styles content

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


postman collection content

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

hub manual my apps provider subscription statuses

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


hub manual my apps

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


statements

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

data elements fdx v4 investmentaccount

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

consent flow improvements akoya id jwt claims

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

data elements fdx v4 insurancetransaction

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

mikomo account types

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

openapi

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

investments contribution

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

transactions insurance transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

oauth implementation styles

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


example 529 transactions response

🚧

These are example responses

The following response is a starting reference for use in planning implementation for this account type. Data providers may change data elements.

Investments response

{ "investmentAccount": { "accountId": "00000000", "accountNumber": "*****6019", "accountType": "College Savings", "availableCashBalance": 0, "balanceAsOf": "2022-03-03T05:00:00Z", "balanceType": "ASSET", "currency": { "currencyCode": "USD" }, "currentValue": 51737.02, "displayName": "Individual", "holdings": [ { "cashAccount": false, "marketValue": 51737.02, "positionType": "LONG", "purchasedPrice": 18.22, "securityIdType": "ISIN", "units": 2028.903 } ], "marginBalance": 0, "nickname": "Kid's 529", } }

Transactions response

[ { "transactions": [ { "investmentTransaction": { "accountId": "00000000", "amount": -31.18, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 1.219, "subCategory": "BY", "transactionId": "9999703221", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 31.18, "category": "DD", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "9999703222", "transactionTimestamp": "2022-03-02T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": -1500, "category": "IA", "securityId": "MA2024903", "securityIdType": "CUSIP", "shares": 58.05, "subCategory": "BY", "transactionId": "131377067", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, { "investmentTransaction": { "accountId": "00000000", "amount": 1500, "category": "X2", "securityIdType": "SEDOL", "shares": 0, "subCategory": "DP", "transactionId": "131377066", "transactionTimestamp": "2022-02-08T05:00:00Z" } }, ... ] } ]

mikomo

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

mikomo 9 response

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

{ "accounts": [ { "depositAccount": { "lineOfBusiness": "Personal", "interestYtd": 0, "transactionsIncluded": false, "accountType": "CHECKING", "currentBalance": 106717.06, "description": "Adv Plus Banking", "accountNumber": "454992210071", "productName": "Adv Plus Banking", "fiAttributes": [ { "name": "displayName", "value": "Adv Plus Banking - 0071" }, { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "0.00" } ], "availableBalance": 106717.06, "accountId": "47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429", "balanceType": "ASSET", "nickname": "Nickname Adv Plus Banking 0071", "balanceAsOf": "2020-05-02T10:08:43.924+0000", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "routingTransitNumber": "125000024", "status": "OPEN" } } ] }
{ "47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429": { "headers": { "Content-Type": "application/json" }, "payload": { "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }, "status": 200 } }
{ "customerId": "1221963501", "name": { "last": "Lewis", "first": "Walter", "middle": "P" }, "telephones": [ { "number": "9197312709" } ], "addresses": [ { "state": "NC", "city": "GOLDSBORO", "line1": "227 BRYANT CIR", "postalCode": "27534-8861" } ], "email": [ "walterplewis@gmail.com" ] }

investments investment accounts

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

implementation steps authenticate select accounts

The following steps will guide you through creation of a test app in the Akoya Sandbox.

Authenticate & select accounts

TaskDescription
Review technical requirements.See: Requirements.
Register with Akoya for Sandbox access.To register, you must provide Akoya with a redirect URI for your use with your Sandbox test app. Akoya will provide you with a client Id and secret for your app.
Securely store client_id and secretEvery App has a unique client Id and secret. They must be treated as secure information and stored securely.
UX - Provider popup or redirectIntegrate into your existing provider selection UI or build popup/ redirect flow for the end-user to select the data provider(s) they'd like to connect with your app. Upon end-user selection, initiate consent and authentication via Akoya to the provider. See: OAuth implementation styles.
Use Sandbox data for implementation and testingThe Akoya Sandbox includes a mock data provider (Mikomo Financial) with several test users that may be used for end-to-end implementation and testing. Use these test accounts for the remaining implementation steps. See: Introduction to Sandbox.
Authorization GrantAfter authentication and authorization, Akoya will return the end-user to your redirect URI with an authorization grant code in the URL with the parameter “code=”. Use this authorization code to request a set of tokens for this end-user. See: Authorization Code.
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
Id and refresh token generationExchange authorization code for ID and Refresh Token See: Token API reference and the token explainer.
Store TokenUse your current secure token storage or implement a way to store each end-user's unique tokens.
Token RevocationImplement a way for the end-user to remove access to their data provider account(s). See Revoke Token.
Error CasesCode for Authorization or Token errors. Develop UX for errors, timeouts, and reauthentication. See Authentication errors and Token API errors.
Validate authenticationValidate UX for account selection, consent, ID/Refresh Token for new and existing users.

Obtain data

TaskDescription
Store x-akoya-interaction-idAkoya returns an interaction id in every response header. Retain the id with logs for support and error tracking.
AccountsUsing the id_token retrieved in the Id and refresh token step above for a test user, make a call for data. See: API Docs - Accounts reference.
TransactionsUsing the id_token retrieved in the Id and refresh token step above for a test user, and the account Id retrieved in the Accounts step above, make a call for transaction data. See: Akoya API v2 - Transactions reference.
Error CasesCode for Akoya API v2 errors. Develop UX for errors, timeouts, and reauthentication. See Errors.
Validate DataValidate use and display of data in your own systems and UI.

pagination 2%EF%B8%8F%E2%83%A3 second request

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


timestamps content

Requests

Akoya follows FDX standards for timestamps in requests.

The startTime and endTime query parameters for the Transactions endpoint must follow RFC 3339, an extension of the ISO8601 format requiring both the date and time in the string. The time should be in UTC:

  • Data type: string

  • Example input: 2019-02-26T00:00:00Z

  • When specifying a time range, both startTime and endTime must be used.

Responses

After you submit your request, Akoya will convert the timestamp to whichever ISO8601 format that provider utilizes then pass the request on to the provider. The response is then passed back to you as-is.

Providers may use any format within the ISO8601 standard, so the exact timestamp in response payloads will vary. Your implementation should take this into account through customization per provider or by using a code library for dates.

Returned timestamp examples

  • 2021-07-15T14:46:41.375Z

  • 2019-09-16T00:00:00.000+0000

  • 2022-01-31T05:00:00Z

  • 2021-08-09

Change log

DateUpdate
2022-Oct-24Original

how to work with akoya project planning guides

Welcome! We’re thrilled that you want to work with us, and we’re committed to making your implementation as smooth as possible.

📌

First!

Be sure to review the "Requirements" guide for a list of implementation requirements and best practices.

Next steps

  • Join the Data Recipient Hub (our signup form is here)

    • Note: Please create one account per company. You can give additional team members access to your company account.
  • Review the Data Recipient Hub user manual

  • Read the “Getting Started” page and our API docs

  • Set up your sandbox application

    • Provide Akoya with a redirect URI for use with your sandbox test app.

    • Generate a client_id and secret when you configure your sandbox application (see the Data Recipient Hub user manual).

  • Determine how to securely store your client_id and secret

    • Every app has a unique client_id and secret. They must be treated as extremely confidential information and stored appropriately. Akoya cannot retrieve client secrets. If you lose yours, you’ll have to reset it.

Where to go from here

🚧

Time estimates are approximate!

All time estimates provided in these guides are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, including the needs of your own application. This content is intended as an aid in developing your own project plans.

Project planning guides

Review the following guides as resources to assist with your project planning:

📋

The “High level project checklist” for suggested steps and approximate timeframes involved in integrating with Akoya. This checklist is appropriate for a business analyst or project manager.

📑

The “Developer project checklist” for the technical implementation steps needed.

📝

The QA test plan for a comprehensive list of functionality tests your QA team or developers can use as you prepare to go live with Akoya.


postman collection payment networks

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

coming soon what does this mean for data recipients

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


intro to fdx content

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


coming soon upcoming features

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


hub manual my apps registering a production app

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


postman collection definitions

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

token flow Akoya scope values

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


akoya v2 release why are we making those changes

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


account info

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

intro to fdx

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


hub manual my apps resetting your client secret

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


account info insurance accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

glossary data access

For an explanation of Akoya-specific parameters, please refer to the Environment parameters section.

Akoya

  • Akoya Data Access Network (DAN): Managed platform leveraging industry standards for data providers and data recipients to empower the consumers with a secure and transparent way to share data.
  • Data Access API: The Data Access API allows recipients to request consumer-permissioned data to flow from a provider through the DAN. Based on the FDX specification, it includes accounts and transactions endpoints.
  • Mikomo: Akoya’s mock data provider, Mikomo can be used in Sandbox to test against representative responses from all data providers live on the DAN.
  • Permission API: The Akoya Permission API allows a data provider to create or support a permission dashboard for its end-users.
  • Sandbox: A dedicated test environment, Sandbox allows recipients to make real calls to Akoya token and data access endpoints. The only data provider available in Sandbox is Mikomo.
  • x-akoya-interaction-id: An autogenerated interaction identifier, the x-akoya-interaction-id is returned in the header of each call, unique to each request, and used as a trace ID for troubleshooting.

Data Access

  • Client ID: Public identifier of an app.
  • Client secret: Private identifier of an app used during authentication of an API.
  • Consumer: An individual or representative acting on behalf of an individual with ownership rights to the data and transactional capabilities at a data provider.
  • Data aggregator: Entities that obtain consumer financial data from data providers.
  • Data provider: A financial institution, like a bank, investment firm, or other organization which provides financial services to consumers.
  • Data recipient: A third-party, like a data aggregator or fintech company, which processes financial data on behalf a consumer.
  • Financial Data Exchange (FDX): A nonprofit dedicated to unifying the financial industry around a common, interoperable, royalty-free standard for the secure access of consumer and business financial data. For more information, see our Introduction to FDX.
  • Screen scraping: When a customer gives their user name and password to a third-party, usually a data aggregator, to log in as that consumer, and extract information to populate its service. With these credentials, a third-party has the same access to an account as the customer themselves. This means that customers lack control over the scope or even duration of access they give to a third-party.

Authorization, Authentication, and Tokens

  • Authentication: Process of obtaining credentials from a user to verify the user's identity.
  • Authorization: Process of granting access rights to an authenticated entity.
  • Authorization code: Temporary code that the data recipient (data aggregator or fintech company) will exchange for an ID token. In Akoya's testing environment, the authorization code is valid for 5 minutes.
  • ID token: An OIDC security token which contains the user’s authentication information in a JSON Web Token (JWT). JWT is a standardized, validated and/or encrypted container format used to securely transfer data between two parties. For more information, see our Token explainer. In Akoya’s testing environment, the ID token is valid for 30 minutes.
  • OAuth: An open standard for token-based authorization protocol on the internet. It enables apps to obtain limited access to a user’s data using a token instead of a user’s password. The token grants access to just the information a consumer has authorized for a specific app.
  • OpenID Connect (OIDC): An identity layer built on top of the OAuth 2.0 protocol. It defines a sign-in flow that enables a client application to authenticate a user and to obtain information (or "claims") about that user, such as the user name and email. User identity information is encoded in a secure JSON Web Token (JWT).
  • Redirect URI: The location (typically in your application) where users are sent after they authenticate successfully with their financial institutions.
  • Refresh token: A token used to get a new set of refresh and ID tokens when the ID token expires or becomes invalid.

API Terminology

  • API: Acronym for Application Programming Interface. APIs let applications (and devices) seamlessly connect and communicate securely.
  • cURL: Tool to transfer data from or to a server using one of the supported protocols.
  • Endpoint: Specifies where resources are located that can be accessed by third party software. Usually access is via a URI to which HTTP requests are posted and from which the response is expected.
  • Header: A user defined HTTP header which carries information about a request in a REST call.
  • HTTP Verbs: The 4 basic HTTP verbs Akoya use sin requests to interact with resources in a REST system:
    1. GET — retrieve a specific resource (by id) or a collection of resources
    2. POST — create a new resource
    3. PUT — update a specific resource (by id)
    4. DELETE — remove a specific resource by id
  • REST (or Representational State Transfer): An architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. In brief, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).
  • Uniform Resource Identifier (URI): A string of characters that refers to a resource. The most common are URLs, which identify the resource by giving its location on the web.

data access network content

1920

The Akoya Data Access Network

The Akoya mission is to create trust among financial institutions, fintechs, and data aggregators to ensure mass participation in Open Finance. Akoya secures the way consumers provide access to their data with increased security, privacy, and control over their information by transitioning data aggregation toward application programming interface (API)-based data access.

  • Removes login credentials from data aggregation by implementing tokenized access.
  • Facilitates a consent flow where consumers authenticate, select accounts, and permission data directly with their financial institution.
  • Ensures consumers have control by giving them the ability to monitor and disable access.
  • Does not store any data accessed or shared on its network.
  • Maintains a pass-through model for complete privacy for all participants. At no point does Akoya know who the consumer is or what data they are sharing.
  • Akoya serves as a data-access utility similar to a trusted delivery service. Akoya delivers the package (data) between a financial institution and a fintech app. Akoya does not open the package, does not make a copy of what is inside, analyze it, or store it for future use. Akoya simply gets the package safely from point A to point B.

Features

Consent flow

The consent flow enables a customer to authenticate, select accounts, and permission data to flow from their data provider through the Data Access Network and to a third-party fintech app. This keeps your customers’ login credentials from being shared with third parties.

Tip: You may click on images to view in full screen

  1. Emily wants to connect a fintech app to her financial institution accounts, in this example, at her fictional bank, Mikomo.
  2. Emily is redirected by the fintech app to Akoya where the fintech and Mikomo ids are validated.
  3. Akoya initiates an auth grant code to Mikomo Bank and Emily authenticates at the Mikomo Bank site.
  4. Emily agrees to terms and conditions and gives authorization to provide access of her data to her fintech app.
  5. Mikomo Bank issues an authorization grant code to Akoya who in turn requests the Mikomo Bank access token.

  1. Using Mikomo Bank’s token, Akoya requests Emily’s account list for selection and permissioning to her fintech app. Emily approves account selection.
  2. Akoya redirects Emily back to her fintech app with the Akoya auth code.
  3. The Akoya auth code is exchanged by the fintech app for an Akoya ID token. The fintech app uses the Akoya token to request Emily’s account details. Akoya then uses Mikomo Bank’s token to request
    permissioned data. ​​
  4. Mikomo Bank returns data to Akoya. Akoya gets the entitlements policy and applies Mikomo Bank’s rules. Akoya returns the data to the fintech app.
  5. Emily sees the permissioned account data.

Akoya API v2

1095

Akoya API v2

Based on Financial Data Exchange (FDX) specifications, the Akoya API v2 allows recipients to request consumer-permissioned data to flow from a provider through the Data Access Network.

Through data mapping and API integration, Akoya translates responses from providers—even those with proprietary APIs—into a common format. Expected and standard API responses help mitigate the need for proprietary APIs, thereby reducing development costs.

Connection Management

3522

Akoya apps: Data Recipient Hub and Management Console

The Management Console is available for data providers to self-manage their connections and configure their settings in the Akoya Data Access Network.

Akoya also provides aggregators and fintechs with the Data Recipient Hub to manage their connection to providers.

Permission API

The Akoya Permission API is used by a data provider to add support to their customer experience for Akoya account permission management.

By making calls to the API, a provider can add a permission dashboard that allows their consumers to see which recipients have access to their permissioned data, add new accounts, remove accounts, or remove access overall.

About Akoya security and technology

  • FDX+ is the primary API interface for data recipients. All APIs are RESTful.
  • OIDC, OAuth 2.0, and SAML are implemented for authorization and authentication.
  • Complete logging, auditability, and traceability.
  • Different logging capabilities available.
  • Cloud-native implementation on AWS that enables elastic scaling in real-time.
  • Micro-services architecture that enables continuous application upgrades and cloud scalability.
  • Strong in-flight and at-rest encryption.
  • Least Privilege Zero-Trust Model.
  • Secure application development implementing DevSecOps.
  • NIST and FFIEC frameworks are leveraged to define and prioritize risks.
  • Akoya is SOC 2/Type 2 certified.
FDX logo
Rest API logo
Open ID logo
SAML logo
AWS logo
OAuth 2 logo
NIST logo
FFIEC logo

data elements fdx v4 investmentloan

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

hub manual authentication

After your account is set up, you (and any team members you add) can log into the Hub here.

Authentication options

Akoya offers two user authentication options for the Hub :

  • password-based authentication + MFA (and a biometric option) via our own identity provider (IDP). This is the "default" option.
  • single sign-on (SSO) via identity federation between the Hub and your company's IDP such as Active Directory.

Akoya-hosted accounts (the first option) are managed entirely within Team management in the Hub. Currently, only the admin role is available for these accounts.

Federated accounts (the second option) are completely managed by your company, as all user accounts and groups "live" in your IDP. Both the admin and viewer roles are available to these accounts.

Please reach out to your customer service manager (CSM) if you're interested in setting up identity federation to access the Hub. Akoya will work with you to set up the integration and to map our two user roles (admin and viewer) to the appropriate security groups on your end. Once integration is complete, you'll manage access to the Hub simply by adding/removing users from the appropriate security groups.


transactions deposit transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

hub manual my apps content

📘

You can only have one sandbox app

You’re only allowed to have one app in our sandbox environment at a time.


Registering your app in sandbox

When you log into the Akoya Hub for the first time and visit the “My apps” section, you’ll see the following screen, inviting you to register your app in our sandbox environment. Click “Create sandbox app.”

Register your app
Register your app

Next, click “Download credentials.” A CSV file download will trigger, containing your client ID and secret.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


Download your client ID and secret
Download your client ID and secret

A sandbox app entity will be created with a randomly-generated client ID and placeholder redirect URI that you can modify later to your own app’s redirect URI.


📘

More info on redirect URIs

See the “Getting started” page for more information on redirect URIs.


Once you register your app, you can return to the “My app” page to reference information about it.

Requesting production access

When you’re ready to move an app into production, an authorized stakeholder at your company will need to fill out the onboarding questionnaire. You'll only need to fill this form out once.

Navigate to the overview page and click “Begin questionnaire.”

Request production access
Request production access

The form covers several topics, including:

  • use cases you're interested in
  • how your company consumes financial data
  • actual and anticipated API call volume
  • number of users supported
  • technical readiness
  • security controls

🚧

Form progress cannot be saved!

If you navigate away from the form before clicking the “Submit” button, your progress will be lost. If desired, you can download a PDF copy of the form to pre-plan your answers.


After you submit the questionnaire, you’ll be taken to a confirmation screen. You’ll also receive an email confirmation with a reference number should you have any questions.

Our staff will review your submission and reach out to you regarding next steps.

Registering a production app

After you've been granted production access, you’ll see a new “Register an app” button in “My apps.”

The 'Register an app' button will display in 'My apps' once you've been granted prod access
The "Register an app" button will display in "My apps" once you've been granted prod access

A registration wizard will open. The first page asks for various app details, such as redirect URI(s) and support contact email address(es). These fields are explained in more detail in the "Modifying app details" section. Click "Continue."

Register a production app - step 1
Register a production app - step 1

Select the Akoya products you want to enable for this particular app. Click "Continue" when finished.

Register a production app - step 2
Register a production app - step 2

Select the providers you'd like to subscribe your app to. Subscribing to a provider will enable your app to pull in data from that institution for customers who have granted explicit permission. Click "Review."

Register a production app - step 3
Register a production app - step 3

Verify that all provided details are correct and click "Register app" when satisfied.

Register a production app - step 4
Register a production app - step 4

Your new app will now show up on the “My apps” page. The first time you view this page, a button will display to the right of the client secret field, allowing you to download your credentials. As with a a sandbox app, this download button can only be used once. If you lose your client secret, your only option will be a reset.


🚧

Client secrets can only be downloaded once

Please save your client secret in a safe place. If you lose it, you'll have to reset it.


A reset icon will display after you download your credentials. You can only download them once!
A reset icon will display after you download your credentials. You can only download them once!

Viewing/modifying app details


The “Details” tab displays the following information and functionality:

  • client ID (view and copy)
  • client secret (reset only)
  • Akoya products (view only)
  • redirect URI(s) (view, copy, and edit)
  • description (view and edit)
  • contact URL (view and edit)
  • app logo (view and edit)
  • app icon (view and edit)
  • support email(s) (view and edit)
  • creation date (view)

Resetting your client secret

Click the reset icon next to the "Client secret" line item.

You’ll receive a warning message about potential service disruption after the reset. A button will appear, allowing you to download your new client secret. The screenshot below shows a sandbox app, but the process is the same for a production app.

Resetting your client secret is a disruptive action! Use this option with care
Resetting your client secret is a disruptive action! Use this option with care

Confirm the reset and download your new client secret.
Confirm the reset and download your new client secret.

Modifying your redirect URI

If you’re adding multiple URIs, separate each one with a comma and click “Save.”

Edit your redirect URI
Edit your redirect URI

Separate multiple URIs with commas
Separate multiple URIs with commas

Modifying logo and icon URLs

The app logo and icon requirements are discussed in the "Team management" section. Requirements for company and app logos/icons are the same.

Modifying support email(s)

Click the pencil icon next to “Support emails” to edit. Separate multiple email addresses with commas. Akoya technical support notifications and alerts will be sent to the emails specified here.

Edit support email(s)
Edit support email(s)

Separate multiple email addresses with commas
Separate multiple email addresses with commas

Viewing your subscribed providers

The “Subscriptions” tab displays all your subscribed providers, subscription status, and which Akoya products are enabled. For your sandbox testing app, the only provider will be our mock financial institution, Mikomo.

View subscribed providers
View subscribed providers

Once your app is in production, you can also request new provider subscriptions from the "Subscriptions" tab.

Click "Add provider subscriptions."

Add new provider subscriptions - step 2
Add new provider subscriptions - step 1

Check the box(es) next to the provider(s) you want to subscribe to, and click "Request subscription." The provider status will change to either active or pending, depending on that provider's policy regarding subscription requests.


Add new provider subscriptions - step 2
Add new provider subscriptions - step 2

Provider subscription statuses

StatusDescription
ActiveYour subscription is enabled. Data from this provider is available to this app.
PendingYour subscription request is under review.
SuspendedThe provider has temporarily paused your subscription. Data from this provider is unavailable to this app. Please reach out to your Customer Success Manager for further assistance.
DeniedThe provider denied your subscription request. Data from this provider is unavailable to this app. Please contact your Customer Success Manager for further assistance.

Clicking on a provider will take you directly to that provider’s documentation and inventory page within the “Data providers” section.


Data provider documentation and data inventory page
Data provider documentation and data inventory page

Here, you can view specific documentation pertaining to that provider, organized into tabs. The provider pages will be discussed in the next section.


tips for using curl online documentation

cURL is a tool that allows you to make HTTP requests from the command line or through scripting. cURL makes use of libcurl, a URL transfer library. For more information, see:

curl.

Online documentation

In our online documentation, the curl command examples follow OSX/Linux/Unix command syntax.

If you are using Windows Command shell or PowerShell, there are a few notable differences in using these cURL snippets.

  • Windows does not support single quotes in Command shell. Nor does it support double quotes inside of double quotes. Each example must be edited:
    • Change single quotes to double quotes
    • If you need a double quote inside a double quote, escape the second set of double quotes, for instance: "{\"emailAddress\":\"user@example.com\"}"
  • Line continuation backslashes are used for readability and are not necessary. These backslashes may be deleted. Or, replace the backslash with a ^ in Command shell or ` in PowerShell.
OSX/Linux/UnixWindows cmd.exePowerShell
Line Continuation Character\^`
Quotes types'"'

Postman

For Postman, you may set the line continuation character and quote types by selecting settings in the code snippet box (in upper right panel of the app) then selecting the options appropriate to your OS. You may also turn off multi-line snippets which removes the line continuation backslash.

757

Postman: Open code snippet cURL settings


unique keys and values sub claim

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


token flow sandbox tokens

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


consent flow improvements whats changing

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

data elements fdx v4 lineitem

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

payments

Full account number and bank routing number. Includes bankId, identifier, type, and identifierType.

Results for payments are returned in JSON in FDX format.

Endpoint: /payments

API documentation: https://docs.akoya.com/v2/reference/payment-networks

Example response

{ "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }

Supported data elements

NameTypeDescription
bankIdstringBank identifier used by the payment network ie. Routing Number
identifierstringThe number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.
identifierTypestringType of identifier
typestringType of payment network
transferInbooleanCan transfer funds to the account using this information
transferOutbooleanCan transfer funds from the account using this information

account info loan accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

data elements fdx v4 portion

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

data recipient hub user manual

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

troubleshooting contact support

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


data recipient hub user manual

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

openapi openapi tools

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include authorization in the header. All responses are returned in JSON format.

OpenAPI tools

Tools such as Stoplight Studio, Swagger UI, or your choice of editors may be used.

If using Swagger UI through a browser without a proxy, the Akoya endpoints will return a CORS error such as: No Access-Control-Allow-Origin header is present on the requested resource.
For more information, see CORS Requirements for "Try It Out" | SwaggerHub.

Tips for code generation

If using a code generator that strictly parses enums, please be aware that data retrieved through the Akoya network may have unknown enums and configure your generator appropriately.

For instance, if generating Java code with openapi-generator, consider setting enumUnknownDefaultCase=true in your configuration. See: openapi-generator/java.md

📘

How to download

The code blocks below contain OpenAPI specs for Akoya token and product endpoints. By hovering on the code, a clipboard icon will appear on the top right. Use it to copy the code. Then paste into your favorite text or code editor and save as a YAML file.

openapi: 3.1.0 info: title: Akoya APIs v2 version: '2.0' description: 'Akoya APIs for data recipients including token, data access, and transaction endpoints. Default servers are set to override for the Akoya sandbox environment.' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com tags: - name: Akoya products description: Akoya products security: - basicAuth: [] servers: - url: 'https://sandbox-products.ddp.akoya.com' description: Sandbox server - url: 'https://products.ddp.akoya.com' description: Products server paths: '/accounts-info/{version}/{providerId}': get: summary: Account information tags: - Akoya products operationId: get-accounts-info description: "Get basic account information including accountId, masked account number, type, description, etc.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/account-info' examples: Accounts Info Example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings balanceType: ASSET currency: currencyCode: USD nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false nickname: Self-Directed status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING balanceType: ASSET currency: currencyCode: USD description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 currency: currencyCode: USD description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 lineOfBusiness: CONSUMER nickname: Savings - 8537 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/balances/{version}/{providerId}': get: summary: Balances tags: - Akoya products operationId: get-balances description: "Account information that includes balances and rates of bank accounts, credit cards, loans, investments, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from a deposit account but all account types are supported by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/balances' examples: Balances example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/transactions/{version}/{providerId}/{accountId}': get: summary: Transactions tags: - Akoya products operationId: get-transactions description: "The transactions API allows you to retrieve transaction history of consumer-permissioned accounts.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call.\n\nFor more information on how to paginate transaction results, please see: [Pagination](https://docs.akoya.com/v2/docs/pagination)" security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/transactions' examples: Savings Transactions: value: links: prev: href: /transactions/v2/mikomo/33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.29 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-01-27T00:00:00Z' status: POSTED transactionId: 22ef95ee-6127-382d-a28c-5b8b7a15d2eb transactionTimestamp: '2021-01-27T00:00:00Z' transactionType: INTEREST - depositTransaction: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d amount: 0.13 debitCreditMemo: CREDIT description: Interest Paid This Period postedTimestamp: '2021-02-24T00:00:00Z' status: POSTED transactionId: f3fced9d-a7a2-4194-5a17-a2a9b09ff64a transactionTimestamp: '2021-02-24T00:00:00Z' transactionType: INTEREST Deposit trx - limit 5 with next & prev: value: links: next: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z transactions: - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -449.07 checkNumber: 31505 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000030' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -4000.4 checkNumber: 31528 description: CHECK postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000020' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: 5048.13 description: DEPOSIT postedTimestamp: '2019-07-08T00:00:00Z' status: POSTED transactionId: '30191890000010' transactionTimestamp: '2019-07-08T00:00:00Z' transactionType: DEPOSIT - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -8.6 checkNumber: 31530 description: CHECK postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000030' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK - depositTransaction: accountId: g833202fb0866d0ad83472c429 amount: -42.94 checkNumber: 31525 description: CHECK##TRANINITDATE# 07/09 postedTimestamp: '2019-07-09T00:00:00Z' status: POSTED transactionId: '30191900000020' transactionTimestamp: '2019-07-09T00:00:00Z' transactionType: CHECK parameters: - name: startTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date - 15 calendar days) is used. If a value is specified, endTime is required.' required: false schema: type: string example: '2020-03-30T04:00:00Z' format: date-time - name: endTime in: query description: 'ISO 8601 date format in UTC time zone. If blank, the default value (current date) is used. If a value is specified, startTime is required.' required: false schema: type: string format: date-time example: '2021-03-30T04:00:00Z' - name: offset in: query description: The number of items to skip before the first in the response. The default is 0. schema: type: string default: '0' - name: limit in: query description: The maximum number of items to be returned in the response. The default is 50. schema: type: string default: '50' parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider - schema: type: string name: accountId in: path required: true description: End-user's accountId '/accounts/{version}/{providerId}': get: summary: Investments tags: - Akoya products operationId: get-accounts description: "Get detailed account information that includes Akoya products Account Info and Balances for all account types (annunity, deposit, insurance, investments, line of credit, and loan) and adds the Investments product to investment accounts including contributions, holdings, vesting information, and more.\n\nTo view the response schema, select the `200` response below. Then pick an option for annuity, deposit, insurance, investment, loan, and line of credit account types. \n\nFor an example payload response, see the `200` example response below the `Try it` feature. The example is from an investment account but all account types are supported and returned by this endpoint.\n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." security: - bearerAuth: [] responses: '200': description: OK headers: x-akoya-interaction-id: schema: type: string description: Akoya supplied interaction id used for logging and error tracking content: application/json: schema: $ref: '#/components/schemas/investments' examples: Investments example: value: accounts: - investmentAccount: accountId: '839502593' accountType: College Savings availableCashBalance: 0 balanceAsOf: '2022-03-16T04:00:00Z' balanceType: ASSET currency: currencyCode: USD currentValue: 52672.49 holdings: - assetClasses: - assetClass: DOMESTICBOND percent: 0 cashAccount: false marketValue: 52672.49 mutualFundSecurity: mutualFundType: OPENEND reinvestCapitalGains: true reinvestDividends: true unitsStreet: 0 unitsUser: 0 yield: 0 yieldAsOfDate: '2019-08-24T14:15:22Z' positionType: LONG purchasedPrice: 18.42 securityIdType: ISIN units: 2088.521 marginBalance: 0 nickname: 529 for Kid - investmentAccount: accountId: '5426873' accountNumberDisplay: ...7054 accountType: BROKERAGE allowedCheckWriting: false availableCashBalance: 0 balanceList: - balanceDate: '2021-07-06' balanceDescription: Margin Call balanceName: MARGINCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Fed Call balanceName: FEDCALL balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-06' balanceDescription: Intra Day balanceName: INTRADAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD - balanceDate: '2021-07-05' balanceDescription: Prior Day balanceName: PRIORDAY balanceType: AMOUNT balanceValue: 0 currency: currencyCode: USD currency: currencyCode: USD lastActivityDate: '2021-07-06T00:00:00Z' margin: false marginBalance: 0 nickname: Self-Directed shortBalance: 0 status: OPEN transactionsIncluded: false - depositAccount: accountId: g833202fb0866d0ad83472c429 accountNumberDisplay: xxxxxxxx0071 accountType: CHECKING availableBalance: 106717.06 balanceAsOf: '2022-04-24T14:15:22Z' balanceType: ASSET currency: currencyCode: USD currentBalance: 106717.06 description: Checking Plus fiAttributes: - name: accountOpenedDate value: '2020-04-23' - name: interestPaidLastYear value: '3.20' interestRate: 0.0125 interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED interestYtd: 20.33 lastActivityDate: '2022-04-24T14:15:22Z' lineOfBusiness: Personal nickname: Nickname Checking Plus 0071 productName: Checking Plus status: OPEN transferIn: true transferOut: true - depositAccount: accountId: 5dbda8de96eeff05f23934523a1fc258 accountNumberDisplay: xxxx0134 accountType: CHECKING annualPercentageYield: 0 availableBalance: 0 balanceAsOf: '2022-04-24T14:15:22Z' currency: currencyCode: USD currentBalance: 0 description: Virtual Wallet Student Reserve interestRateAsOf: '2022-04-24T14:15:22Z' interestRateType: FIXED lastActivityDate: '2022-04-01T10:05:00Z' lineOfBusiness: LBRB openingDayBalance: 0 productName: Virtual Wallet Student Reserve transactionsIncluded: false - depositAccount: accountId: 11719ae5-2399-1278-e43c-43f24abb3058 accountType: CD annualPercentageYield: 0.75 availableBalance: 6808.29 balanceAsOf: '2021-04-07T10:20:43.276Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 6808.29 description: Certificate of Deposit fiAttributes: - name: eStatements value: 'False' - name: interestPaidLastYear value: '50.72' - name: isTransactionsSupported value: 'False' - name: issueDate value: '2019-03-21T00:00:00.000Z' - name: interestPayoutFrequency value: Semi-Annually (And At Maturity) interestRate: 0.75 interestYtd: 25.24 lineOfBusiness: CONSUMER maturityDate: '2024-03-21T00:00:00Z' nickname: Certificate of Deposit - 3691 openingDayBalance: 2000 parentAccountId: 11719ae5-2399-1278-e43c-43f24abb3058 status: OPEN term: 60 transactionsIncluded: false transferIn: false transferOut: false - depositAccount: accountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d accountType: SAVINGS availableBalance: 20608.9 balanceAsOf: '2021-04-07T10:08:11.833Z' balanceType: ASSET currency: currencyCode: USD originalCurrencyCode: USD currentBalance: 20608.9 description: Savings fiAttributes: - name: eStatements value: 'True' interestRate: 0.01 interestYtd: 0.29 lineOfBusiness: CONSUMER nickname: Savings - 8537 openingDayBalance: 20608.9 parentAccountId: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d status: OPEN transactionsIncluded: false parameters: - schema: type: string in: query name: accountIds description: Account identifier(s) for the end-user parameters: - schema: type: string default: v2 name: version in: path required: true description: Akoya product version - schema: type: string default: mikomo name: providerId in: path required: true description: End-user's data provider '/customers/{version}/{providerId}/current': get: operationId: customer-info tags: - Akoya products description: "This product supports use cases such as payment enablement, account opening, or lending & credit enhancement. Responses return information about the authorized end-user, the customer associated with the `id_token` used in the call. This information may include, but is not limited to, the customer identifier, name, email, address, and phone number.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." summary: Customer info parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo security: - bearerAuth: [] responses: '200': description: Data describing current authenticated customer. content: application/json: schema: $ref: '#/components/schemas/customer' examples: example-1: value: customer: customerId: '1221963501' name: first: Firstname middle: P last: Familyname addresses: - line1: 101 Address city: City state: NC postalCode: 27534-8861 telephones: - number: 888-888-8888 email: - email@example.com - email2@example.com accounts: - accountId: '1058527205' relationship: PRIMARY_JOINT - accountId: '1058566233' relationship: SECONDARY headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '/payments/{version}/{providerId}/{accountId}/payment-networks': get: tags: - Akoya products summary: Payments description: "This product supports use cases such as payment enablement or account opening. The response includes identifiers necessary to make ACH and RTP payments. Identifiers include account number, routing number, identifier type (actual or tokenized account number), and payment network type such as ACH or RTP.\n\n<br>\n\nTo see the response schema, select the `200` response below. For an example payload response, see the `200` example response below the *Try it* feature. \n\n> \U0001F6D1\n> \n> The *id_token* should be used as the bearer token with this call." operationId: payment-networks parameters: - name: version in: path description: Akoya product version required: true schema: type: string default: v2 - name: accountId in: path description: Account identifier required: true schema: type: string - name: providerId in: path description: End-user's data provider required: true schema: type: string default: mikomo deprecated: false security: - bearerAuth: [] responses: '200': description: Information required to execute a payment transaction against this account content: application/json: schema: $ref: '#/components/schemas/accountPaymentNetworkList' examples: paymentNetworks: value: paymentNetworks: - bankId: '125000024' identifier: '454992210071' identifierType: ACCOUNT_NUMBER type: US_ACH transferIn: true transferOut: true No paymentNetworks: value: paymentNetworks: [] headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '401': description: 602 - Customer does not have authorization to perform this action. The customer may have revoked access through provider and would need to reauthenticate. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 602 message: Customer not authorized headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '403': description: 403 - The `providerId` is wrong or your app doesn't have a subscription to the provider. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 403 message: Subscription not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. '404': description: 701 - Account not found. The `accountId` may be wrong. content: application/json: schema: $ref: '#/components/schemas/error' example: code: 701 message: Account not found headers: x-akoya-interaction-id: schema: type: string description: Akoya tracking id for logging or support. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: description: The `id_token` should be used as the bearer token in this call. type: http scheme: bearer bearerFormat: JWT schemas: accountInfo: title: Account information type: object properties: accountId: description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution. type: string accountType: description: 'The type of an account. For instance, CHECKING, SAVINGS, 401K, etc.' type: string accountNumberDisplay: description: Account display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider. type: string currency: $ref: '#/components/schemas/currency' description: type: string fiAttributes: type: array items: $ref: '#/components/schemas/fiAttribute' nickname: description: Name given by the user. Used in UIs to assist in account selection type: string productName: type: string description: 'Marketed product name for this account. Used in UIs to assist in account selection ' status: type: string enum: - OPEN - CLOSED - PENDINGOPEN - PENDINGCLOSE - DELINQUENT - PAID - NEGATIVECURRENTBALANCE description: The status of an account. lineOfBusiness: description: 'The line of business, such as consumer, consumer joint, small business, corporate, etc.' type: string balanceType: type: string description: 'ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)' enum: - ASSET - LIABILITY interestRate: description: Interest Rate of Account type: number interestRateType: type: string enum: - FIXED - VARIABLE description: The type of interest rate. FIXED or VARIABLE. interestRateAsOf: type: string description: Date of account’s interest rate format: date-time lastActivityDate: type: string description: Date that last transaction occurred on account format: date-time micrNumber: description: MICR Number type: string parentAccountId: description: Long-term persistent identity of the parent account. This is used to group accounts. type: string priorInterestRate: description: Previous Interest Rate of Account type: number transferIn: type: boolean description: Account is eligible for incoming transfers transferOut: type: boolean description: Account is eligible for outgoing transfers account-info: title: Akoya Account Info product description: An optionally paginated array of accounts type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositAccount' - properties: loanAccount: $ref: '#/components/schemas/loanAccount' - properties: locAccount: $ref: '#/components/schemas/locAccount' - properties: investmentAccount: $ref: '#/components/schemas/investmentAccount' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceAccount' - properties: annuityAccount: $ref: '#/components/schemas/annuityAccount' accountPaymentNetworkList: title: Array of account payment networks description: An optionally paginated array of payment networks supported by the account allOf: - type: object properties: paymentNetworks: type: array items: $ref: '#/components/schemas/accountPaymentNetwork' description: Array of payment networks accountPaymentNetwork: title: Payment Network Supported by Account description: This provides details required to execute a transaction against the account within the payment network type: object properties: bankId: type: string description: Bank identifier used by the payment network ie. Routing Number identifier: type: string description: 'The number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.' identifierType: type: string description: Type of identifier type: type: string description: Type of payment network transferIn: type: boolean description: Can transfer funds to the account using this information transferOut: type: boolean description: Can transfer funds from the account using this information balances: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: investmentAccount: $ref: '#/components/schemas/investmentBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' balanceList: title: Investment Balance List type: object properties: balanceName: type: string description: Name of the balance. balanceDescription: type: string description: Description of balance. balanceType: type: string enum: - AMOUNT - PERCENTAGE description: The type of an investment balance. AMOUNT or PERCENTAGE. balanceValue: type: number description: Value of balance name. balanceDate: type: string description: Date as of this balance. format: date-time currency: $ref: '#/components/schemas/currency' annuityAccount: title: AnnuityAccount description: Annuity Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annuityProductType: enum: - CURRENCY - SHARES type: string annuityValueBasis: enum: - FIXED - VARIABLE type: string paymentFrequency: type: string enum: - ANNUALLY - QUARTERLY - MONTHLY - WEEKLY annuityBalance: title: Annuity balances description: Data elements included with balances specific to annuity accounts allOf: - $ref: '#/components/schemas/annuityAccount' - type: object properties: annualIncrease: description: Percent or dollar amount of annual payment increase type: number annualIncreaseType: type: string enum: - FIXED - PERCENT - DOLLAR netPresentValue: description: Surrender or cash balance value type: number paymentAmount: description: Amount of the recurring payment type: number paymentEndDate: type: string description: Date last payment will be made format: date-time paymentStartDate: type: string description: Date of first payment; could be a future date format: date-time periodCertainGuarantee: type: string enum: - NO PERIOD CERTAIN - 5-YEAR - 10-YEAR - 20-YEAR - 30-YEAR totalPaymentCount: description: Total number of payments that will be produced by the annuity type: number contribution: title: Contribution Entity type: object description: Describes how new contributions are distributed among the available securities. properties: securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN employerMatchPercentage: type: number description: Employer contribution match percentage employerMatchAmount: type: number description: Employer contribution match amount employeePreTaxAmount: type: number description: Employee pre‐tax contribution amount employeePreTaxPercentage: type: number description: Employee pre‐tax contribution percentage employeeAfterTaxAmount: type: number description: Employee after tax contribution amount employeeAfterTaxPercentage: type: number description: Employee after tax contribution percentage employeeDeferPreTaxAmount: type: number description: Employee defer pre‐tax contribution match amount employeeDeferPreTaxPercentage: type: number description: Employee defer pre‐tax contribution match percentage employeeYearToDate: type: number description: Employee total year to date contribution employerYearToDate: type: number description: Employer total year to date contribution rolloverContributionPercentage: type: number description: Rollover contribution percentage rolloverContributionAmount: type: number description: Rollover contribution Amount currency: title: Currency Entity type: object properties: currencyCode: description: Iso 4217 currency code. type: string currencyRate: description: Currency rate between original and converted currency. type: number originalCurrencyCode: description: Iso 4217 currency code. type: string description: Indicates the currency code used by the account. May also include currency rate. customer: description: Represents a customer (end-user) type: object properties: customer: type: object description: Represents a customer (end-user) properties: customerId: type: string description: Long-term persistent identity of the end-user. This identity must be unique to the owning institution name: type: object description: The end-user's name properties: first: type: string description: First or given name. This data element may contain first & last name if not separated. middle: type: string last: type: string prefix: description: 'Name prefix, e.g. Mr.' type: string suffix: description: Generational or academic suffix type: string company: type: string description: Company name addresses: type: array uniqueItems: true minItems: 1 description: An array of the end-user's physical mail addresses items: type: object properties: type: description: The location type of an address type: string enum: - BUSINESS - HOME - MAILING line1: type: string description: May contain full address if not separated line2: type: string line3: type: string city: type: string state: type: string postalCode: type: string country: type: string description: ISO 3166 Country Code telephones: type: array uniqueItems: true minItems: 1 items: type: object properties: number: type: string type: type: string enum: - HOME - BUSINESS - CELL - FAX country: type: string description: Country calling codes defined by ITU-T recommendations E.123 and E.164 email: type: array description: An array of the end-user's electronic mail addresses items: type: string accounts: type: array uniqueItems: true minItems: 1 description: List of accounts related to this end-user items: type: object properties: accountId: type: string description: Account ID of the related account relationship: type: string description: Types of relationships between accounts and holders. Suggested values enum: - AUTHORIZED_USER - BUSINESS - FOR_BENEFIT_OF - FOR_BENEFIT_OF_PRIMARY - FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SECONDARY - FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED - FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED - POWER_OF_ATTORNEY - PRIMARY_JOINT_TENANTS - PRIMARY - PRIMARY_BORROWER - PRIMARY_JOINT - SECONDARY - SECONDARY_JOINT_TENANTS - SECONDARY_BORROWER - SECONDARY_JOINT - SOLE_OWNER - TRUSTEE - UNIFORM_TRANSFER_TO_MINOR debtSecurity: title: DebtSecurity Entity description: Information about the debt security specific to the type of security type: object properties: parValue: type: number description: Par value amount debtType: type: string description: Debt type enum: - ASSET - COUPON debtClass: type: string description: Classification of debt enum: - TREASURY - MUNICIPAL - CORPORATE - OTHER couponRate: type: number description: Bond coupon rate for next closest call date couponDate: type: string format: date-time description: Maturity date for next coupon couponMatureFrequency: type: string description: When coupons mature enum: - MONTHLY - QUARTERLY - SEMIANNUAL - ANNUAL - OTHER callPrice: type: number description: Bond call price yieldToCall: type: number description: Yield to next call callDate: type: string format: date-time description: Next call date callType: type: string description: Type of next call enum: - CALL - PUT - PREFUND - MATURITY yieldToMaturity: type: number description: Yield to maturity bondMaturityDate: type: string format: date-time description: Bond Maturity date depositAccount: title: DepositAccount description: Deposit Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: annualPercentageYield: description: 'Annual Percentage Yield.' type: number term: type: integer description: Term of CD in months maturityDate: type: string description: 'Maturity date for CDs.' format: date-time depositBalance: title: Deposit balances description: Data elements included with balances specific to deposit accounts allOf: - $ref: '#/components/schemas/depositAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time openingDayBalance: description: Day's opening fund balance type: number availableBalance: description: Balance of funds available for use type: number interestYtd: description: YTD Interest type: number currentBalance: description: Balance of funds in account type: number depositTransaction: description: Deposit transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: payee: type: string description: Payee name checkNumber: type: integer description: Check Number transactionType: type: string description: DepositTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT equityGrant: title: equityGrant type: object properties: grantId: type: string description: Unique identifier of grant grantDate: type: string format: date-time description: Date grant was given grantType: type: string description: Type of grant seqNum: type: number grantPrice: type: number description: Grant price grantCurrencyCode: type: string description: 'Indicates the currency of grant USD vs AUD vs EUR etc (for share awards, you will still get a USD)' quantityGranted: type: number description: Number of options quantityOutstanding: type: number expirationDate: type: string format: date-time description: Date grant expires vestings: type: array description: 'An array of equityGrant vestings. Provides the past, present, and future vesting schedule and percentages.' items: type: object properties: vestedQuantity: description: Vested quantity (Vested shares total qty of vesting tranche) type: number vestedValue: type: number description: Vested balance at grant (aggregate of all vestings) vestingDate: type: string format: date-time vestExpireDate: type: string format: date-time vestedStatus: type: string fiAttribute: title: FiAttribute Entity description: Data provider-specific attribute properties: name: type: string description: Name of attribute value: type: string description: Value of attribute type: object error: title: Error Entity description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account. type: object properties: code: type: integer description: Long term persistent identifier which can be used to trace error condition back to log information message: type: string description: End user displayable information which might help the customer diagnose an error hateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: 'https://api.fi.com/fdx/v4/accounts/12345' action: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request types: type: array description: Content-types that can be used in the Accept header. items: type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json example: application/json required: - href holding: title: An investment holding allOf: - type: object - type: object properties: assetClasses: type: array uniqueItems: true minItems: 1 description: Percent breakdown by asset class. items: type: object properties: assetClass: type: string enum: - DOMESTICBOND - INTLBOND - LARGESTOCK - SMALLSTOCK - INTLSTOCK - MONEYMARKET - OTHER percent: type: number description: Percentage of asset class that falls under this asset averageCost: type: boolean description: Cost is average of all purchases for holding. cashAccount: type: boolean description: 'If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.' changeInPrice: type: number description: Change in current price compared to previous day's close currency: $ref: '#/components/schemas/currency' currentUnitPrice: type: number currentUnitPriceDate: type: string format: date-time description: Current unit price as of date description: type: string description: Description of the holding expirationDate: type: string description: 'For CDs, bonds, and other time-based holdings.' format: date-time faceValue: type: number description: Face value at the time of data retrieved. fiAssetClasses: type: array description: Percent breakdown by FI-specific asset class percentage breakdown items: type: object properties: assetClass: type: string description: FI-specific asset class percent: type: number description: Percentage of asset class that falls under this asset fiAttributes: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/fiAttribute' heldInAccount: type: string description: Sub-account enum: - CASH - MARGIN - SHORT - OTHER holdingId: type: string description: Long term persistent identity of the holding holdingName: type: string description: Holding name or security name holdingSubType: type: string enum: - MONEYMARKET - CASH holdingType: type: string enum: - STOCK - BOND - MUTUALFUND - CD - ANNUITY - OPTION - OTHER inv401kSurce: type: string description: 'Source for money for this security. ' enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST marketValue: type: number description: Market value at the time of data retrieved originalPurchaseDate: type: string description: Date of original purchase format: date-time positionType: type: string enum: - LONG - SHORT purchasedPrice: type: number description: Price of holding at the time of purchase rate: type: number description: 'For CDs, bonds, and other rate based holdings.' securityId: type: string description: Unique identifier of security securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Ticker / Market symbol taxLots: type: array uniqueItems: true minItems: 1 description: Breakdown by tax lot. items: type: object properties: costBasis: type: number description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred. currentValue: type: number description: Lot market value originalPurchaseDate: type: string format: date-time description: Lot acquired date. postionType: type: string enum: - LONG - SHORT description: 'LONG, SHORT.' purchasedPrice: type: number description: Original purchase price. quantity: type: number description: Lot quantity. units: type: number description: 'Number of shares (with decimals).' - oneOf: - type: object properties: mutualFundSecurity: $ref: '#/components/schemas/mutualFundSecurity' - type: object properties: optionSecurity: $ref: '#/components/schemas/optionSecurity' - type: object properties: otherSecurity: $ref: '#/components/schemas/otherSecurity' - type: object properties: stockSecurity: $ref: '#/components/schemas/stockSecurity' - type: object properties: sweepSecurity: $ref: '#/components/schemas/sweepSecurity' - type: object properties: debtSecurity: $ref: '#/components/schemas/debtSecurity' insuranceAccount: title: InsuranceAccount description: Insurance Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: accountCategory: type: string enum: - DEPOSIT_ACCOUNT - INVESTMENT_ACCOUNT - LOAN_ACCOUNT - LOC_ACCOUNT - INSURANCE_ACCOUNT description: 'The account category of the insurance account. Possible enums: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT' insuranceBalance: title: Insurance balances description: Data elements included with balances specific to insurance accounts allOf: - $ref: '#/components/schemas/insuranceAccount' - type: object properties: policyCoverageAmount: description: Total amount of money the user is insured for. type: number policyEndDate: type: string format: date-time description: The premium end date. policyPremium: description: The amount of the user's premium. type: number policyPremiumTerm: type: string enum: - MONTHLY - ANNUAL description: he payment term for the premium. MONTHLY or ANNUAL. policyStartDate: type: string format: date-time description: The premium start date. insuranceTransaction: description: Insurance transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: transactionType: type: string description: InsuranceTransaction Type enum: - PAYMENT - FEE - ADJUSTMENT - INTEREST investmentAccount: title: InvestmentAccount description: Investment Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: allowedCheckWriting: description: Check writing privileges type: boolean allowedOptionTrade: description: Allowed to trade options type: boolean brokerId: type: string description: Unique identifier FI calendarYearFor401K: description: Date for this calendar year for 401K account type: string employerName: type: string description: Name of the employer in investment 401k Plan margin: description: Margin trading is allowed type: boolean planId: type: string description: Plan number for Investment 401k plan investmentBalance: title: Investment balances description: Data elements included with balances specific to investment accounts allOf: - $ref: '#/components/schemas/investmentAccount' - type: object properties: availableCashBalance: description: Cash balance across all sub-accounts. Should include sweep funds. type: number balanceAsOf: type: string description: As-of date of balances format: date-time balanceList: type: array description: Balance List. Name value pair aggregate. items: $ref: '#/components/schemas/balanceList' currentValue: description: Total current value of all investments type: number dailyChange: description: Daily change type: number marginBalance: description: Margin balance type: number percentageChange: description: Percentage change type: number rolloverAmount: description: Rollover amount type: number shortBalance: description: Short balance type: number investmentLoan: title: InvestmentLoan Entity properties: loanId: type: string description: Unique identifier for this loan loanDescription: type: string description: Description initialLoanBalance: type: number description: Initial loan balance amount loanStartDate: type: string format: date-time description: Start date of the loan currentLoanBalance: type: number description: Current loan principal balance amount dateAsOf: type: string format: date-time description: Date and time of current loan balance loanRate: type: number description: Loan annual interest rate for the loan loanPaymentAmount: type: number description: Loan payment amount loanPaymentFrequency: type: string enum: - WEEKLY - BIWEEKLY - TWICEMONTHLY - MONTHLY - FOURWEEKS - BIMONTHLY - QUARTERLY - SEMIANNUALLY - ANNUALLY - OTHER loanPaymentInitial: type: number description: Initial number of loan payments loanPaymentsRemaining: type: integer description: Remaining number of loan payments loanMaturityDate: type: string format: date-time description: Expected loan end date loanInterestToDate: type: number description: Total interest paid to date on this loan loanTotalProjectedInterest: type: number description: Total projected interest to be paid on this loan loanNextPaymentDate: type: string format: date-time description: The next payment date for the loan description: Information about an investment loan. investments: title: '' type: object allOf: - type: object properties: accounts: type: array description: 'An array of accounts with entity types dependent on the account type (deposit, investment, loan, line of credit, annuity or insurance)' items: anyOf: - properties: investmentAccount: $ref: '#/components/schemas/investmentDetails' - properties: depositAccount: $ref: '#/components/schemas/depositBalance' - properties: loanAccount: $ref: '#/components/schemas/loanBalance' - properties: locAccount: $ref: '#/components/schemas/locBalance' - properties: insuranceAccount: $ref: '#/components/schemas/insuranceBalance' - properties: annuityAccount: $ref: '#/components/schemas/annuityBalance' investmentDetails: title: Investment account with all details description: Data elements included with the investment product allOf: - $ref: '#/components/schemas/investmentBalance' - type: object properties: holdings: type: array description: Array of holdings items: $ref: '#/components/schemas/holding' openOrders: type: array description: Array of open orders items: $ref: '#/components/schemas/openOrder' contribution: type: array description: Array of contribution objects. Describes how new contributions are distributed among the available securities items: $ref: '#/components/schemas/contribution' vesting: type: array description: 'Array of vesting objects. Provides the past, present, and future vesting schedule and percentages' items: $ref: '#/components/schemas/vesting' investmentLoans: type: array description: Array of investment loans items: $ref: '#/components/schemas/investmentLoan' pensionSource: type: array description: Array of Pension Source items: $ref: '#/components/schemas/pensionSource' equityGrants: type: array description: 'Provides equity grant information on Restricted Stock Units, Restricted Stock Awards, Stock Appreciation Right, Stock Options, Performance Awards, and Total Share Return Units' items: $ref: '#/components/schemas/equityGrant' investmentTransaction: description: Investment Transactions allOf: - $ref: '#/components/schemas/transaction' - type: object properties: accruedInterest: type: number description: Accrued Interest. commission: type: number description: Transaction commission. confirmationNumber: type: string description: Confirmation number of the transaction. faceValue: type: number description: Cash value for bonds. fees: type: number description: Fees applied to the trade. fractionalCash: type: number description: Cash for fractional units (used for stock splits). gain: type: number description: For sales. incomeType: type: string description: 'Type of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.' enum: - CGLONG - CGSHORT - MISC inv401kSource: type: string description: Source of money. enum: - PRETAX - AFTERTAX - MATCH - PROFITSHARING - ROLLOVER - OTHERVEST - OTHERNONVEST load: type: number description: Load on the transaction. loanId: type: string description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment. loanInterest: type: number description: How much loan pre-payment is interest. loanPrincipal: type: number description: How much loan pre-payment is principal. markup: type: number description: Portion of unit price that is attributed to the dealer markup. newUnits: type: number description: Number of shares after split. oldUnits: type: number description: Number of shares before split. payrollDate: type: string description: The date for the 401k transaction was obtained in payroll. penalty: type: number description: Indicates amount withheld due to a penalty. positionType: type: string enum: - LONG - SHORT price: type: number description: Unit purchase price. priorYearContrib: type: boolean description: Indicates this buy was made using prior years contribution. TRUE or FALSE. runningBalance: type: number description: Running balance of the position. securityId: type: string description: Unique identifier of security. securityIdType: type: string description: Security identifier type. enum: - BUSIP - ISIN - SEDOL - SICC - VALOR - WKN securityType: type: string enum: - STOCK - MUTUALFUND - DEBT - OPTION - SWEEP - OTHER - BOND shares: type: number description: 'Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.' splitRatioDenominator: type: number description: Split ratio denominator. splitRatioNumerator: type: number description: Split ratio numerator. stateWithholding: type: number description: State tax withholding. subAccountFund: type: string description: From which account money came in. enum: - CASH - MARGIN - SHORT - OTHERS subAccountSec: type: string description: Sub-account security type. enum: - CASH - MARGIN - SHORT - OTHERS symbol: type: string description: Ticker symbol. taxes: type: number description: Taxes on the trade. taxExempt: type: boolean description: Tax-exempt transaction TRUE or FALSE. transactionReason: type: string description: 'Reason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)' enum: - CALL - SELL - MATURITY transactionType: type: string description: InvestmentTransaction Type enum: - PURCHASED - SOLD - PURCHASEDTOCOVER - ADJUSTMENT - PURCHASETOOPEN - PURCHASETOCLOSE - SOLDTOOPEN - SOLDTOCLOSE - INTEREST - MARGININTEREST - REINVESTOFINCOME - RETURNOFCAPITAL - TRANSFER - CONTRIBUTION - FEE - OPTIONEXERCISE - OPTIONEXPIRATION - DIVIDEND - DIVIDENDREINVEST - SPLIT - CLOSURE - INCOME - EXPENSE - CLOSUREOPT - INVEXPENSE - JRNLSEC - JRNLFUND - OTHER - DIV - SRVCHG - DEP - DEPOSIT - ATM - POS - XFER - CHECK - PAYMENT - CASH - DIRECTDEP - DIRECTDEBIT - REPEATPMT transferAction: type: string description: Transfer direction. enum: - IN - OUT unitPrice: type: number description: 'Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.' units: type: number description: 'For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.' unitType: type: string enum: - SHARES - CURRENCY withholding: type: number description: Federal tax withholding. lineItem: title: LineItem type: object properties: amount: type: number description: The amount of money attributable to this line item checkNumber: type: number description: Check number description: type: string description: The description of the line item imageIds: type: array description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt items: type: string links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary item description reference: type: string description: A reference number loanAccount: title: LoanAccount description: Loan Account allOf: - $ref: '#/components/schemas/accountInfo' - type: object properties: compoundingPeriod: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY loanTerm: type: integer description: Term of loan in months maturityDate: type: string description: Maturity date format: date-time originatingDate: type: string description: Loan origination date format: date-time paymentFrequency: type: string enum: - DAILY - WEEKLY - BIWEEKLY - SEMIMONTHLY - MONTHLY - SEMIANNUALLY - ANNUALLY totalNumberOfPayments: type: integer description: Total number of payments loanBalance: title: Loan balances description: Data elements included with balances specific to loan accounts allOf: - $ref: '#/components/schemas/loanAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time escrowBalance: description: Escrow balance of loan type: number interestPaidYearToDate: description: Interest paid year to date type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Date of next payment format: date-time originalPrincipal: description: Original principal of loan type: number payOffAmount: description: Payoff amount type: number principalBalance: description: Principal balance of loan type: number loanTransaction: title: Loan Transaction allOf: - $ref: '#/components/schemas/transaction' - type: object properties: paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LoanTransaction Type enum: - ADJUSTMENT - FEE - INTEREST - PAYMENT description: Loan Transaction locAccount: title: LocAccount description: Line of Credit Account allOf: - $ref: '#/components/schemas/accountInfo' locBalance: title: Line of credit balances description: Data elements included with balances specific to line of credit accounts allOf: - $ref: '#/components/schemas/locAccount' - type: object properties: balanceAsOf: type: string description: As-of date of balances format: date-time advancesApr: description: Advances APR type: number availableCash: description: Available cash type: number availableCredit: description: Available credit type: number cashAdvanceLimit: description: Cash advance limit type: number creditLine: description: Credit limit type: number currentBalance: description: Current balance LOC type: number currentRewardsBalance: description: Current rewards balance type: number financeCharges: description: Finance charges type: number lastPaymentAmount: description: Last payment amount type: number lastPaymentDate: type: string description: Last payment date format: date-time lastStmtBalance: description: Last Statement Balance type: number lastStmtDate: type: string description: Last Statement Date format: date-time minimumPaymentAmount: description: Minimum payment amount type: number nextPaymentAmount: description: Amount of next payment type: number nextPaymentDate: type: string description: Due date of next payment format: date-time pastDueAmount: description: Past Due Amount type: number pointsAccrued: description: Points accrued type: number principalBalance: description: Principal balance type: number pointsRedeemed: description: Points redeemed type: number purchasesApr: description: Purchases APR type: number locTransaction: title: LocTransaction description: A line of credit transaction of type allOf: - $ref: '#/components/schemas/transaction' - type: object description: Additional data elements for line of credit transactions properties: checkNumber: type: integer description: Check number paymentDetails: $ref: '#/components/schemas/paymentDetails' transactionType: type: string description: LocTransaction Type enum: - CHECK - WITHDRAWAL - TRANSFER - POSDEBIT - ATMWITHDRAWAL - BILLPAYMENT - FEE - DEPOSIT - ADJUSTMENT - INTEREST - DIVIDEND - DIRECTDEPOSIT - ATMDEPOSIT - POSCREDIT mutualFundSecurity: title: MutualFundSecurity Entity description: Information about the mutual fund security specific to the type of security type: object properties: mutualFundType: type: string description: Mutual fund type enum: - OPENEND - CLOSEEND - OTHER unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends reinvestCapitalGains: type: boolean description: Reinvest capital gains yield: type: number description: Current yield reported as portion of the fund's assets yieldAsOfDate: type: string format: date-time description: As-of date for yield value openOrder: title: OpenOrder Entity type: object description: Information on an open order. properties: orderId: type: string description: Long term persistent identity of the order. Id for this order transaction. securityId: type: string description: Unique identifier of the security. securityIdType: type: string description: Security identifier type enum: - CUSIP - ISIN - SEDOL - SICC - VALOR - WKN symbol: type: string description: Market symbol description: type: string description: Description of order units: type: number description: 'Number of units (shares, bonds, etc.)' orderType: type: string enum: - BUY - SELL - BUYTOCOVER - BUYTOOPEN - SELLTOCOVER - SELLTOOPEN - SELLSHORT - SELLCLOSE description: Type of order. orderDate: type: string format: date-time description: Order date unitPrice: type: number description: Unit price unitType: type: string enum: - CURRENCY - SHARES description: Type of unit. orderDuration: description: 'This order is good for DAY, GOODTILLCANCEL, IMMEDIATE' type: string enum: - DAY - GOODTILLCANCEL - IMMEDIATE subAccount: type: string enum: - CASH - MARGIN - SHORT - OTHER limitPrice: type: number description: Limit Price stopPrice: type: number description: Stop price inv401kSource: type: string enum: - AFTERTAX - MATCH - OTHERNONVEST - OTHERVEST - PRETAX - PROFITSHARING - ROLLOVER description: 'For 401(k) accounts, source of money for this order. Default if not present is OTHERNONVEST.' optionSecurity: title: OptionSecurity Entity description: Information about the option security specific to the type of security type: object properties: secured: type: string enum: - COVERED - NAKED description: How the option is secured optionType: type: string enum: - CALL - PUT strikePrice: type: number description: Strike price / Unit price expireDate: type: string format: date-time description: Expiration date of option sharesPerContract: type: number description: Shares per contract otherSecurity: title: OtherSecurity Entity description: Information about the security specific to the type of security type: object properties: typeDescription: type: string description: Description of Other Security paginatedArray: type: object properties: links: type: object properties: next: type: object properties: href: type: string prev: type: object properties: href: type: string x-examples: example-1: links: next: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z prev: href: /fdx/v4/mikomo/accounts/g833202fb0866d0ad83472c429/transactions?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z paymentDetails: title: PaymentDetails type: object description: Payment details for some transactions properties: escrowAmount: type: number description: The amount of payment applied to escrow feesAmount: type: number description: The amount of payment applied to fees insuranceAmount: type: number description: The amount of payment applied to life/health/accident insurance on the loan interestAmount: type: number description: The amount of payment applied to interest pmiAmount: type: number description: The amount of payment applied to PMI principalAmount: type: number description: The amount of payment applied to principal pensionSource: title: PensionSource Entity properties: displayName: type: string description: Name of the Source amount: type: number description: Benefit Amount paymentOption: type: string description: Form of payment asOfDate: type: string format: date-time description: Date benefit was calculated frequency: type: string enum: - ANNUALLY - BIWEEKLY - DAILY - MONTHLY - SEMIANNUALLY - SEMIMONTHLY - WEEKLY startDate: type: string format: date-time description: Assumed retirement date ‐ As of date amount is payable description: Information about a pension source. stockSecurity: title: StockSecurity Entity description: Information about the stock security specific to the type of security type: object properties: unitsStreet: type: number description: 'Units in the FI''s street name, positive quantity' unitsUser: type: number description: 'Units in user''s name directly, positive quantity' reinvestDividends: type: boolean description: Reinvest dividends stockType: type: string enum: - BOND - DEBT - MUTUALFUND - OPTION - OTHER - STOCK - SWEEP yield: type: number description: Current yield yieldAsOfDate: type: string format: date-time description: Yield as-of date sweepSecurity: title: SweepSecurity Entity description: Information about the sweep security specific to the type of security type: object properties: currentBalance: type: number description: Balance of funds in account availableBalance: type: number description: Balance of funds available for use balanceAsOf: type: string format: date-time description: As-of date of balances checks: type: boolean description: Whether or not checks can be written on the account transaction: type: object description: Transaction elements properties: accountId: type: string description: Corresponds to AccountId in Account amount: type: number description: |- The amount of money in the account currency. If balanceType is `ASSET`: 1. If `debitCreditMemo` = `DEBIT`, sign is "+" or not present 2. If `CREDIT`, sign is "-" If balanceType is `LIABILITY`: 1. If `debitCreditMemo` = `DEBIT`, sign is "-" 2. If `CREDIT`, sign is "+" or not present category: type: string description: 'Transaction category, preferably MCC or SIC.' debitCreditMemo: type: string description: Akoya will ensure that this is correctly populated with one of DEBIT or CREDIT and matches the sign of the status field. enum: - DEBIT - CREDIT description: type: string description: The description of the transaction imageIds: type: array items: type: string description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt. fiAttributes: type: array uniqueItems: true minItems: 1 description: Array of FI-specific attributes items: $ref: '#/components/schemas/fiAttribute' foreignAmount: type: number description: The amount of money in the foreign currency foreignCurrency: type: string description: The ISO 4217 code of the foreign currency lineItem: type: array description: Breakdown of the transaction details items: $ref: '#/components/schemas/lineItem' links: type: array items: $ref: '#/components/schemas/hateoasLink' description: 'Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs' memo: type: string description: Secondary transaction description postedTimestamp: type: string description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. format: date-time reference: type: string description: A tracking reference identifier referenceTransactionId: type: string description: |- Akoya ensures that this field is populated for all transactions which are reversals, otherwise it is null. Either way it is always present. For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction. status: type: string description: 'AUTHORIZATION, MEMO, PENDING, or POSTED' enum: - PENDING - MEMO - POSTED - AUTHORIZATION subCategory: type: string description: Transaction category detail transactionId: type: string description: |- Long term persistent identity of the transaction (unique to account). Transaction IDs should: 1. be the same for pending and posted 2. be different for reversed transactions 3. `referenceTransactionId` should be present for reversed transactions' transactionTimestamp: type: string description: |- The date and time that the transaction was added to the server backend systems. Akoya ensures that this field is populated for all transactions to which it applies, otherwise it is null. Either way it is always present. format: date-time transactions: title: Transactions Entity description: Optionally paginated array of transactions allOf: - $ref: '#/components/schemas/paginatedArray' - type: object properties: transactions: description: 'An array of transactions with entity types dependent on the account type (deposit, investment, loan, or line of credit)' type: array items: anyOf: - properties: depositTransaction: $ref: '#/components/schemas/depositTransaction' - properties: loanTransaction: $ref: '#/components/schemas/loanTransaction' - properties: locTransaction: $ref: '#/components/schemas/locTransaction' - properties: investmentTransaction: $ref: '#/components/schemas/investmentTransaction' - properties: insuranceTransaction: $ref: '#/components/schemas/insuranceTransaction' type: object vesting: title: Vesting Entity properties: vestingDate: type: string format: date-time description: Vesting date symbol: type: string description: Security symbol strikePrice: type: number description: Strike price vestingPercentage: type: number description: Vesting percentage otherVestAmount: type: number description: Other vest amount otherVestPercentage: type: number description: Other vest percentage vestedBalance: type: number description: Vested balance unVestedBalance: type: number description: Unvested balance vestedQuantity: type: number description: Vested qualtity unVestedQuantity: type: number description: Unvested quantity type: object description: 'Provides the past, present, and future vesting schedule and percentages.'
openapi: 3.1.0 info: title: Akoya Token API description: Akoya Token APIs for data recipients. Default servers are set to override for the Akoya sandbox environment. version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-idp.ddp.akoya.com' description: Akoya Sandbox IdP server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token: post: tags: - Token API summary: Token description: |- _Obtain tokens_: The token endpoint allows you to obtain id and refresh tokens. You will need to pass the authorization code from the end-user's authentication flow. See: [Get authorization code](https://docs.akoya.com/reference/get-authorization-code) The issued `id_token` (JWT) is a short-lived token. To retrieve a new `id_token`, use the refresh token request. [Read more about tokens](https://docs.akoya.com/docs/token-flow). > 🛑 > > For basic auth, use your *client_id* and *client_secret* for username & password. operationId: get-token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/obtainTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. '/{token}': post: tags: - Token API summary: Refresh token description: |- Once the `id_token` expires, use the `refresh_token` to request a new set of tokens. Refresh token expiration times are set by the provider. [Read more about tokens](https://docs.akoya.com/docs/token-flow). operationId: refresh-token security: [] parameters: - name: token in: path required: true schema: type: string default: token requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/refreshTokenRequest' deprecated: false responses: '200': description: OK content: application/x-www-form-urlencoded: {} application/json: schema: $ref: '#/components/schemas/tokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_request description: Invalid or expired code parameter. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' example: message: invalid_client description: Invalid client credentials. components: securitySchemes: BasicAuth: type: http scheme: basic description: 'For Basic Auth, use your `client_id` and `client_secret` for username & password' schemas: obtainTokenRequest: title: Obtain tokens type: object required: - grant_type - redirect_uri - code properties: grant_type: type: string description: Set to `authorization_code` to indicate an authorization code will be returned default: authorization_code redirect_uri: type: string description: URI where user will be redirected after end-users authorization is complete. It must be the same as the URI called in the authorization request code: type: string description: Authorization code from end-user's authentication. description: |- To obtain id and refresh tokens, you must first obtain an authorization code. Pass it in the body of the request as "code." The issued JWT will have an expiration that is set by the provider and will be valid only for the data permissioned by the end-user. refreshTokenRequest: title: Refresh tokens description: 'Once the ID Token expires, you will need to call the token endpoint to obtain a new set of ID tokens. Refresh token expiration is set by the data provider.' type: object required: - grant_type - refresh_token - client_id - client_secret properties: grant_type: type: string description: Set to `refresh_token` to indicate a new id token will be returned default: refresh_token refresh_token: type: string description: The refresh token client_id: type: string description: Your app's client ID from Akoya client_secret: type: string description: Your app's Client secret x-examples: example-1: value: grant_type: refresh_token refresh_token: string client_id: string client_secret: string tokenResponse: title: Token Example Response required: - token_type - expires_in - refresh_token - id_token type: object properties: token_type: type: string expires_in: type: integer format: int32 refresh_token: type: string id_token: type: string example: token_type: bearer expires_in: 86399 refresh_token: ChlnNm5hdWV4ZWN0aWdpdmJvdn...ZXZwbXNpaXh5ZWN6dWE3a21kbjZt id_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjJ...lAQGaJAsWlA3YdBBaL2ftE-v2g4fctKOug error: title: Error response type: object properties: message: type: string description: type: string x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp
openapi: 3.0.0 info: title: Akoya Revoke Token API description: 'Akoya API for data recipients to revoke tokens. Default servers are set to override for the Akoya sandbox environment.' version: '1.00' contact: name: API Support url: 'http://www.akoya.com' email: questions@akoya.com servers: - url: 'https://sandbox-permission.api.ddp.akoya.com' description: Akoya Sandbox Permission server tags: - name: Token API description: Token Management security: - BasicAuth: [] paths: /token/revoke: post: tags: - Token API summary: Revoke ID Token description: This request revokes access tokens granted on behalf of the end-user. operationId: revoke-token parameters: - name: akoyaId in: header schema: type: string deprecated: true description: 'Deprecated. Do not use. Trace ID for troubleshooting. Required until deprecated October 1, 2021. Akoya will automatically generate an ID and return it in the response header `x-akoya-interaction-id`' requestBody: content: application/x-www-form-urlencoded: encoding: {} schema: required: - token - client_id - client_secret - token_type_hint type: object properties: client_id: type: string description: Client ID example: Client ID client_secret: type: string description: Client secret example: CLIENT_SECRET token: type: string description: Refresh token example: REFRESH_TOKEN token_type_hint: type: string description: Accepts `refresh_token` default: refresh_token example: refresh_token deprecated: false security: [] responses: '200': description: OK content: {} components: securitySchemes: BasicAuth: type: http scheme: basic x-headers: [] x-explorer-enabled: true x-proxy-enabled: true x-samples-enabled: true x-samples-languages: - curl - node - ruby - javascript - python - csharp

Change log

DateUpdate
2022‑Dec‑21The specification had set recommended data elements as required in the response schemas, which caused code generation issues. This has been resolved. A tip was added to suggest allowing unknown enums during code generation.
2022‑Dec‑05The specification had an error in the schema for returning multiple accounts with account data calls. This has been resolved. Updated examples.
2022‑Nov‑18The specification did not indicate that the Investments endpoint supports all account types. This has been resolved with an update to the investments model, the addition of an investmentDetails model, and clarifications made in descriptions for Account Info, Balances, and Investments endpoints.
2022‑Oct‑12Original version of Akoya OpenAPI spec 2.0

balances balancelist

The Akoya Balances product combines basic end-user account information with the latest, actionable financial account data including: available balance, payment amounts, due dates, credit card rewards details, limits, due dates, year-to-date interest, and more.

The balances endpoint returns all data available in the Account info product plus data such as current balance, payment dates, and other data (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for balances are returned in JSON in FDX format. Balances include a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, line of credit, or loan account categories.

Endpoint: /balances

API documentation: https://docs.akoya.com/v2/reference/get-balances

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z", "currentBalance": 106717.06, "availableBalance": 106717.06, "balanceAsOf": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Balances product responses vary by account category.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements

Deposit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
openingDayBalancenumberDay's opening fund balance
availableBalancenumberBalance of funds available for use
interestYtdnumberYTD Interest
currentBalancenumberBalance of funds in account

Loan accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
escrowBalancenumberEscrow balance of loan
interestPaidYearToDatenumberInterest paid year to date
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Date of next payment
originalPrincipalnumberOriginal principal of loan
payOffAmountnumberPayoff amount
principalBalancenumberPrincipal balance of loan

Line of credit accounts

may also include:

NameTypeDescription
balanceAsOfstring(date-time)As-of date of balances
advancesAprnumberAdvances APR
availableCashnumberAvailable cash
availableCreditnumberAvailable credit
cashAdvanceLimitnumberCash advance limit
creditLinenumberCredit limit
currentBalancenumberCurrent balance LOC
currentRewardsBalancenumberCurrent rewards balance
financeChargesnumberFinance charges
lastPaymentAmountnumberLast payment amount
lastPaymentDatestring(date-time)Last payment date
lastStmtBalancenumberLast Statement Balance
lastStmtDatestring(date-time)Last Statement Date
minimumPaymentAmountnumberMinimum payment amount
nextPaymentAmountnumberAmount of next payment
nextPaymentDatestring(date-time)Due date of next payment
pastDueAmountnumberPast Due Amount
pointsAccruednumberPoints accrued
principalBalancenumberPrincipal balance
pointsRedeemednumberPoints redeemed
purchasesAprnumberPurchases APR

Investment accounts

may also include:

NameTypeDescription
availableCashBalancenumberCash balance across all sub-accounts. Should include sweep funds.
balanceAsOfstring(date-time)As-of date of balances
balanceListarrayArray of balanceList objects.
currentValuenumberTotal current value of all investments
dailyChangenumberDaily change
marginBalancenumberMargin balance
percentageChangenumberPercentage change
rolloverAmountnumberRollover amount
shortBalancenumberShort balance

balanceList

NameTypeDescription
balanceNamestringName of the balance.
balanceDescriptionstringDescription of balance.
balanceTypestringThe type of an investment balance. AMOUNT or PERCENTAGE.
balanceValuenumberValue of balance name.
balanceDatestring(date-time)Date as of this balance.
currencycurrency objectcurrency object which may include currencyRate, currencyCode, and originalCurrencyCode

Insurance accounts

may also include:

NameTypeDescription
policyCoverageAmountnumberTotal amount of money the user is insured for.
policyEndDatestring(date-time)The premium end date.
policyPremiumnumberThe amount of the user's premium.
policyPremiumTermstringThe payment term for the premium. MONTHLY or ANNUAL.
policyStartDatestring(date-time)The premium start date.

Annuity accounts

may also include:

All of the below are deprecated in FDX 5 and will be removed in FDX 6.

NameTypeDescription
annualIncreasenumberPercent or dollar amount of annual payment increase
annualIncreaseTypestringFIXED, PERCENT, DOLLAR. Deprecated, will be removed in FDX 6.0.
netPresentValuenumberSurrender or cash balance value
paymentAmountnumberAmount of the recurring payment
paymentEndDatestring(date-time)Date last payment will be made
paymentStartDatestring(date-time)Date of first payment; could be a future date
periodCertainGuaranteestringNONE, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR.
totalPaymentCountnumberTotal number of payments that will be produced by the annuity

data elements fdx v4 hateoaslink

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

data elements fdx v4 openorder

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

troubleshooting having trouble

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


qa overview

Please reference the error case inventory, pagination document, and the various Mikomo test users available in the sandbox as you complete these tests. Akoya provides a set of generic Mikomo users to test our APIs. Provider-specific Mikomo users and data inventories are also available in the Data Recipient Hub.

🚧

Caution

Samples are based on production data, but responses may be updated or changed by providers.

References

TopicReference
Akoya API docsAkoya API Docs
Recommended project planHigh level project checklist
Integration guideDeveloper project checklist
Sample test planSee "Sample test plan" section.
Akoya error code inventory
Authentication errorsAuthentication errors
Token API errorsToken API errors
Akoya API errorsData Access API errors
PaginationPagination
Mikomo test users
General test usersMikomo
Provider-specificHoused within the Hub; please reference provider-specific pages for data inventories and provider-specific Mikomo test users

Our plan includes four sections which cover:

  1. Authentication: Authentication flow to the point when Akoya returns an ID token.

  2. Token management: The ID token refresh/revocation process.

  3. Akoya product responses: Responses from Akoya API endpoints.

  4. Akoya API Error Cases: Errors triggered by Akoya data APIs.


payments

Full account number and bank routing number. Includes bankId, identifier, type, and identifierType.

Results for payments are returned in JSON in FDX format.

Endpoint: /payments

API documentation: https://docs.akoya.com/v2/reference/payment-networks

Example response

{ "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }

Supported data elements

NameTypeDescription
bankIdstringBank identifier used by the payment network ie. Routing Number
identifierstringThe number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.
identifierTypestringType of identifier
typestringType of payment network
transferInbooleanCan transfer funds to the account using this information
transferOutbooleanCan transfer funds from the account using this information

mikomo 6 response content

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

  • List of accounts
  • Account details
{         "accounts": [           {             "accountId": "1927368180",             "accountNumber": "*****7492",             "accountType": "HSA",             "description": "Health Savings Account",             "displayName": "Health Savings Account",             "nickname": "Company HSA"           },           {             "accountId": "1048765182",             "accountNumber": "*****5729",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "John 529"           },           {             "accountId": "1051344706",             "accountNumber": "*****0073",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "INDIVIDUAL"           },           {             "accountId": "1506439401",             "accountNumber": "*****8258",             "accountType": "IRA",             "description": "Traditional IRA",             "displayName": "Traditional IRA",             "nickname": "IRA"           },           {             "accountId": "1563794797",             "accountNumber": "*****8141",             "accountType": "TODI",             "description": "Individual - TOD",             "displayName": "Individual - TOD",             "nickname": "Kaytan 529"           },           {             "accountId": "1931314440",             "accountNumber": "*****3189",             "accountType": "IRRL",             "description": "Rollover IRA",             "displayName": "Rollover IRA",             "nickname": "Rollover IRA"           },           {             "accountId": "1764334283",             "accountNumber": "*****8656",             "accountType": "NONP",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "FIDELITY NQDC PLAN"           },           {             "accountId": "1700080179",             "accountNumber": "*****0467",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "AKOYA"           },           {             "accountId": "722148112",             "accountNumber": "*****0312",             "accountType": "401K",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "FIDELITY RET SAVINGS"           },           {             "accountId": "255519456",             "accountNumber": "*****5525",             "accountType": "NRMA",             "description": "Defined Contributions",             "displayName": "Defined Contributions",             "nickname": "Fidelity Retiree Health Reimbursement Plan"           }         ]       }
{         "accounts": {           "investmentAccount": [             { "accountNumber": "*****7492", "accountId": "1927368180", "accountType": "HSA", "displayName": "Health Savings Account", "nickname": "Health Savings Account", "balanceAsOf": 1605560504, "currentValue": 3744.28, "availableCashBalance": 525.02, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 5220, "marketValue": 220, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99318" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 507.5, "marketValue": 507.5, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC94939" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 7515.82, "marketValue": 7515.82, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC96900" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 281.3, "marketValue": 281.3, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC98906" } ] }, { "securityIdType": "CUSTOM", "positionType": "LONG", "cashAccount": true, "units": 0.4, "marketValue": 0.4, "fiAttributes": [ { "name": "SecurityIdType", "value": "CUSIP" }, { "name": "SecurityId", "value": "FDIC99359" } ] }, { "securityId": "316389105", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 751.183, "Symbol": "FOCPX", "marketValue": 3744.28, "PurchasedPrice": 9.12 } ] }, { "accountNumber": "*****5729", "accountId": "1048765182", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "John 529", "balanceAsOf": 1605560504, "currentValue": 191.73, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "MA0000905", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 8.229, "marketValue": 191.73 } ] }, { "accountNumber": "*****0073", "accountId": "1051344706", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "INDIVIDUAL", "balanceAsOf": 1605560504, "currentValue": 0, "availableCashBalance": 409.41, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "316048107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 132.55, "Symbol": "FTEXX", "marketValue": 132.55 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 276.86, "Symbol": "SPAXX", "marketValue": 276.86 } ] }, { "accountNumber": "*****8258", "accountId": "1506439401", "accountType": "IRA", "displayName": "Traditional IRA", "nickname": "Traditional IRA", "balanceAsOf": 1605560504, "currentValue": 10000, "availableCashBalance": 0.4, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "302993LM0", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 10000, "marketValue": 10000, "PurchasedPrice": 100.21 }, { "securityId": "31617H102", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 0.4, "Symbol": "SPAXX", "marketValue": 0.4 } ] }, { "accountNumber": "*****8141", "accountId": "1563794797", "accountType": "TODI", "displayName": "Individual - TOD", "nickname": "Kaytan 529", "balanceAsOf": 1605560504, "currentValue": 4216.09, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "MA0000905", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 182.725, "marketValue": 4216.09 } ] }, { "accountNumber": "*****3189", "accountId": "1931314440", "accountType": "IRRL", "displayName": "Rollover IRA", "nickname": "Rollover IRA", "balanceAsOf": 1605560504, "currentValue": 8113.45, "availableCashBalance": 1016.52, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "balanceType": "ASSET", "holdings": [ { "securityId": "63872T745", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 27.859, "Symbol": "AMFAX", "marketValue": 275.24, "PurchasedPrice": 9.94 }, { "securityId": "31635R801", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 41.523, "Symbol": "FSAMX", "marketValue": 541.99, "PurchasedPrice": 11.72 }, { "securityId": "31635R843", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 38.051, "Symbol": "FSCFX", "marketValue": 546.91, "PurchasedPrice": 14.34 }, { "securityId": "316067107", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": true, "units": 201.52, "Symbol": "FDRXX", "marketValue": 201.52 }, { "securityId": "31635R876", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 74.472, "Symbol": "FPIOX", "marketValue": 566.31, "PurchasedPrice": 9.24 }, { "securityId": "31635R884", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 1653.639, "Symbol": "FPCIX", "marketValue": 15802.72, "PurchasedPrice": 11.35 }, { "securityId": "00203H842", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 5.684, "Symbol": "AQMNX", "marketValue": 58.32, "PurchasedPrice": 8.09 }, { "securityId": "31635R702", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 39.904, "Symbol": "FVSAX", "marketValue": 632.7, "PurchasedPrice": 7.54 }, { "securityId": "31635R504", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 102.193, "Symbol": "FCSAX", "marketValue": 21107.14, "PurchasedPrice": 20.89 }, { "securityId": "277923280", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 4.64, "Symbol": "EGRAX", "marketValue": 40.95, "PurchasedPrice": 10.49 }, { "securityId": "31635R868", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 117.655, "Symbol": "FILFX", "marketValue": 136.61, "PurchasedPrice": 10.97 }, { "securityId": "192476109", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 2.144, "Symbol": "CSRSX", "marketValue": 135.54, "PurchasedPrice": 57.61 }, { "securityId": "31635R603", "securityIdType": "CUSIP", "positionType": "LONG", "cashAccount": false, "units": 27.379, "Symbol": "FSGFX", "marketValue": 675.02, "PurchasedPrice": 23.99 } ] }, { "accountNumber": "*****8656", "accountId": "1764334283", "accountType": "NONP", "displayName": "Defined Contributions", "nickname": "FIDELITY NQDC PLAN", "balanceAsOf": 1605243600, "currentValue": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "Contributions": [] }, { "accountNumber": "*****0467", "accountId": "1700080179", "accountType": "401K", "displayName": "Defined Contributions", "nickname": "AKOYA", "balanceAsOf": 1605243600, "currentValue": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "Contributions": [] }, { "accountNumber": "*****0312", "accountId": "722148112", "accountType": "401K", "displayName": "Defined Contributions", "nickname": "FIDELITY RET SAVINGS", "balanceAsOf": 1605243600, "currentValue": 45059.49, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "holdings": [ { "securityIdType": "CUSIP", "units": 14.884, "currentUnitPrice": 14.06, "Symbol": "FTRNX", "marketValue": 1307.82 }, { "securityIdType": "CUSIP", "units": 41.481, "currentUnitPrice": 18.95, "Symbol": "FZAHX", "marketValue": 634.85 }, { "securityIdType": "CUSIP", "units": 68.052, "currentUnitPrice": 13.05, "Symbol": "FKIDX", "marketValue": 587.58 }, { "securityIdType": "CUSIP", "units": 75.455, "currentUnitPrice": 24.56, "Symbol": "FXAIX", "marketValue": 981.88 }, { "securityIdType": "CUSIP", "units": 87.424, "currentUnitPrice": 15.32, "Symbol": "FZALX", "marketValue": 148.54 }, { "securityIdType": "CUSIP", "units": 14.158, "currentUnitPrice": 4.67, "Symbol": "FGBMX", "marketValue": 267.22 }, { "securityIdType": "CUSIP", "units": 146.339, "currentUnitPrice": 1.53, "Symbol": "FDVKX", "marketValue": 1137.49 }, { "securityIdType": "CUSIP", "units": 155.314, "currentUnitPrice": 16.15, "Symbol": "FOSKX", "marketValue": 925.88 }, { "securityIdType": "CUSIP", "units": 14.22, "currentUnitPrice": 4.58, "Symbol": "FSRNX", "marketValue": 201.72 }, { "securityIdType": "CUSIP", "units": 147.748, "currentUnitPrice": 11.6, "Symbol": "FIKMX", "marketValue": 2593.87 }, { "securityIdType": "CUSIP", "units": 210.261, "currentUnitPrice": 4.86, "Symbol": "FKEMX", "marketValue": 8303.8 }, { "securityIdType": "CUSIP", "units": 301.036, "currentUnitPrice": 15, "Symbol": "FAPCX", "marketValue": 415.55 }, { "securityIdType": "CUSIP", "units": 337.695, "currentUnitPrice": 5.28, "Symbol": "FETKX", "marketValue": 15767.63 }, { "securityIdType": "CUSIP", "units": 3929.674, "currentUnitPrice": 22.19, "Symbol": "FBCGX", "marketValue": 8709.46 }, { "securityIdType": "CUSIP", "units": 443.073, "currentUnitPrice": 29.17, "Symbol": "FDGKX", "marketValue": 125529.34 }, { "securityIdType": "CUSIP", "units": 46.753, "currentUnitPrice": 0.67, "Symbol": "FGKFX", "marketValue": 842.12 }, { "securityIdType": "CUSIP", "units": 507.984, "currentUnitPrice": 4.14, "Symbol": "FGIKX", "marketValue": 2655.47 }, { "securityIdType": "CUSIP", "units": 513.331, "currentUnitPrice": 11.54, "Symbol": "FIKUX", "marketValue": 5069.44 }, { "securityIdType": "CUSIP", "units": 505.426, "currentUnitPrice": 17.7, "Symbol": "FZAJX", "marketValue": 1016.04 }, { "securityIdType": "CUSIP", "units": 64.337, "currentUnitPrice": 10.93, "Symbol": "FIPDX", "marketValue": 70119.63 }, { "securityIdType": "CUSIP", "units": 72.382, "currentUnitPrice": 8.58, "Symbol": "FGUMX", "marketValue": 629.87 }, { "securityIdType": "CUSIP", "units": 7119.914, "currentUnitPrice": 8.45, "Symbol": "FTKFX", "marketValue": 5206.09 }, { "securityIdType": "CUSIP", "units": 710.903, "currentUnitPrice": 12.78, "Symbol": "FIKOX", "marketValue": 12423.34 }, { "securityIdType": "CUSIP", "units": 947.27, "currentUnitPrice": 11.35, "Symbol": "FTHRX", "marketValue": 1915.02 }, { "securityIdType": "CUSIP", "units": 1191.672, "currentUnitPrice": 11.78, "Symbol": "FGMNX", "marketValue": 11151.9 }, { "securityIdType": "CUSIP", "units": 1989.732, "currentUnitPrice": 8.55, "Symbol": "FIKQX", "marketValue": 16747.22 }, { "securityIdType": "CUSIP", "units": 2165.877, "currentUnitPrice": 10.06, "Symbol": "FCNVX", "marketValue": 25870.72 } ], "contributions": [] }, { "accountNumber": "*****5525", "accountId": "255519456", "accountType": "NRMA", "displayName": "Defined Contributions", "nickname": "Fidelity Retiree Health Reimbursement Plan", "balanceAsOf": 1605243600, "currentValue": 0, "MarginBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "USD", "originalCurrencyCode": "USD" }, "holdings": [ { "securityIdType": "CUSTOM", "units": 0, "currentUnitPrice": 1, "marketValue": 0, "fiAttributes": [ { "name": "SecurityIdType", "value": "FundCode" }, { "name": "SecurityId", "value": "UNQU" }                   ]                 }               ]             }           ]         }       }

coming soon search for data providers and akoya products

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


consent flow improvements

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

statements example response

The Statements product allows retrieval of statements for your end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

Paginated Statement list results include an array of statement information with the end-user's account identifier and details such as statement id, date, description, and status. The results also include links to GET the statement, most often returned in PDF format. Other supported file formats are GIF, JPG, TIFF, and PNG.

Endpoints:

/statements/{version}/{providerId}/{accountId}

/statements/{version}/{providerId}/{accountId}/{statementId}

API documentation:

https://docs.akoya.com/v2/reference/get-statement-list

https://docs.akoya.com/v2.0/reference/get-statements

Supported data elements

NameTypeDescription
accountIdstringCorresponds to accountId in Account entity
statementIdstringLong-term persistent identity of the statement
statementDatedateTimeDate of the statement (ISO 8601 format)
descriptionstringDescription of statement
statusstringDefines the status of a document
linkhateoasLink object arrayThe statement download link hosted by Akoya

How to use the Statements product

📘

Note

If you’d like to test with the steps detailed below, sign in as the sandbox mikomo_11 user and consent to share data with your sandbox app (for help authenticating & authorizing in sandbox, see: Get authorization code). Use the resulting id_token as the bearer token in the cURL commands.

GET Statement List

To get statements for your end-user, first retrieve a list of available statements for the consented account. Your request may include a date range of up to two years of historical statements (maximum date ranges vary by provider).

Endpoint: /statements/{version}/{providerId}/{accountId}

API documentation: https://docs.akoya.com/v2/reference/get-statement-list

curl --location "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465?startTime=2022-02-26T00%3A00%3A00Z&endTime=2023-02-26T00%3A00%3A00Z&offset=0&limit=5" --header "Authorization: Bearer {token}"

Example response

{ "links": { "prev": { "href": "/statements/v2/mikomo/513815781465?endTime=2023-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2022-02-26T00%3A00%3A00Z" } }, "statements": [ { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu1", "statementDate": "2022-05-26", "description": "FFOS Monthly/Quarterly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu2", "statementDate": "2023-01-02", "description": "FFOS Year End Investment Report", "status": "FAILED", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu2", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu3", "statementDate": "2023-01-05", "description": "FFOS Monthly/Quarterly Statement", "status": "PROCESSING", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu3", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] }, { "accountId": "513815781465", "statementId": "P9CvLPKDaFRMbNDkhu4", "statementDate": "2023-02-24", "description": "FFOS Yearly Statement", "status": "AVAILABLE", "links": [ { "href": "https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu4", "action": "GET", "types": [ "application/pdf", "image/jpeg", "image/png" ] } ] } ] }

How to read the statement list response

To provide a consistent way to link each statement provided in the list, Akoya includes the exact API call for retrieving each statement. By providing these calls, Akoya allows a passthrough of the statement since direct connections to providers cannot be made. Akoya also interprets any special characters in statement metadata and tokenizes the statementId.

Please use the href link created in the response.

Note: If you’re testing using Postman, you may use the tokenized statementId value included in statements.links.href.

GET Statement

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

API documentation: https://docs.akoya.com/reference/get-statements

From the statement list response, use statements.links.href as the location in the cURL command. To save the response to pdf, include the output command with a file name.

curl --location "<https://sandbox-products.ddp.akoya.com/statements/v2/mikomo/513815781465/P9CvLPKDaFRMbNDkhu1"> --header "Accept: application/pdf" --header "Authorization: Bearer {token}" --output example.pdf

hub manual team management edit profile display name

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

customers supported data elements

Full customer information for permissioned end-user.

Results for customers are returned in JSON in FDX format.

Endpoint: /customers

API documentation: https://docs.akoya.com/v2/reference/customer-info

Example response

{ "customer": { "customerId": "1521963501", "name": { "last": "Last", "first": "First", "middle": "H" }, "telephones": [ { "number": "9585550103" } ], "addresses": [ { "state": "TN", "city": "SPRINGFIELD", "line1": "7572 Road Rd", "postalCode": "37172-6488" } ], "email": [ "user@example.com" ] } }

Supported data elements

NameTypeDescription
customerIdstringLong-term persistent identity of the customer. This identity must be unique to the owning institution
nameobjectnone
name.firststringFirst or given name. This data element may contain first & last name if not separated.
name.middlestringnone
name.laststringnone
name.prefixstringName prefix, e.g. Mr.
name.suffixstringGenerational or academic suffix
name.companystringCompany name
addressesarray[addresses]An array of the customer's addresses
addresses.typestringThe location type of an address
addresses.line1stringMay contain full address if not separated
addresses.line2stringnone
addresses.line3stringnone
addresses.citystringnone
addresses.statestringnone
addresses.postalCodestringnone
addresses.countrystringISO 3166 Country Code
telephonesarray[telephones]An array of the customer's telephone numbers.
telephones.numberstringnone
telephones.typestringnone
telephones.countrystringCountry calling codes defined by ITU-T recommendations E.123 and E.164
emailarray[string]An array of the customer's electronic mail addresses

requirements best practices

We have a number of implementation requirements to ensure the security of our network and our end-users' financial data. Please review these requirements before continuing.

🚧

Please don’t skip this page!

Please take the time to go over all the resources in this section before moving on to the project checklists.

Requirements

  • A consent UX in your app

  • OIDC token use with secure, encrypted storage

  • Redirect URI(s)

    • The callback resource in your application where Akoya will send the end-user and authorization code after successful authentication
  • Secure, encrypted storage for your app’s client_id, client_secret and all tokens

    • The client_secret should NEVER be hard-coded into your application's source code.

Best practices

📘

Scheduled maintenance window

Akoya has scheduled maintenance on Tuesdays from 10AM-1PM EST. Outages during this time should be expected, but minimal in nature. If you encounter issues during this time, please wait until the conclusion of the maintenance window to try again.

  • Provide a link for the end-user to revoke permission for use of their provider's accounts.

  • Build a pagination component into your app, allowing it to receive one page at a time.

  • Adhere to transaction guidelines issued by the data provider.

  • Please notify Akoya when major service disruptions occur that impact the network, such as an event that causes you to invalidate all tokens or forces re-authentication.

  • To report support issues to Akoya, track the header x-akoya-interaction-id returned with each Akoya API request.

FDX

Akoya API v2 is based on Financial Data Exchange (FDX) specifications (learn more about FDX here). The following FDX guidance is recommended while using Akoya API v2:

  • Utilize the FDX API, security, and user experience specifications.

  • Follow FDX version recommendations for API deprecation.

Recipients need not be members of FDX to integrate with the Akoya Data Access Network; however, FDX provides a variety of membership options. It also provides fee-free access to API specifications by accepting the intellectual property agreement.


mikomo mikomo 2023

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

customers example response

Full customer information for permissioned end-user.

Results for customers are returned in JSON in FDX format.

Endpoint: /customers

API documentation: https://docs.akoya.com/v2/reference/customer-info

Example response

{ "customer": { "customerId": "1521963501", "name": { "last": "Last", "first": "First", "middle": "H" }, "telephones": [ { "number": "9585550103" } ], "addresses": [ { "state": "TN", "city": "SPRINGFIELD", "line1": "7572 Road Rd", "postalCode": "37172-6488" } ], "email": [ "user@example.com" ] } }

Supported data elements

NameTypeDescription
customerIdstringLong-term persistent identity of the customer. This identity must be unique to the owning institution
nameobjectnone
name.firststringFirst or given name. This data element may contain first & last name if not separated.
name.middlestringnone
name.laststringnone
name.prefixstringName prefix, e.g. Mr.
name.suffixstringGenerational or academic suffix
name.companystringCompany name
addressesarray[addresses]An array of the customer's addresses
addresses.typestringThe location type of an address
addresses.line1stringMay contain full address if not separated
addresses.line2stringnone
addresses.line3stringnone
addresses.citystringnone
addresses.statestringnone
addresses.postalCodestringnone
addresses.countrystringISO 3166 Country Code
telephonesarray[telephones]An array of the customer's telephone numbers.
telephones.numberstringnone
telephones.typestringnone
telephones.countrystringCountry calling codes defined by ITU-T recommendations E.123 and E.164
emailarray[string]An array of the customer's electronic mail addresses

data recipient hub user manual whats new in version 50

Overview

The Data Recipient Hub (The Hub) is a web-based application used for registering and managing apps, and viewing provider-specific documentation.

Hub overview page
Hub overview page

This document is broken into multi-page sections which cover the following topics:


What's new in version 5.0?

We've made some UI changes and added some new features designed to improve the user experience.

Updates include:

  • additional editable attributes on the company and app-level profile pages, such as support notification email address(es)
  • enhanced data providers page that lists supported Akoya products for each institution
  • improved app overview page that lists enabled Akoya products for each app
  • new app details page that shows provider subscriptions and their statuses
  • role-based access control (RBAC). This option is currently available for federated accounts only.

Quick start

📘

Quick tip

To navigate through each in the Hub guide, use the What's Next links at the bottom of the pages.


Change log

DateUpdate
2023-Jun-30Modified "Authentication" section to reflect RBAC updates, modified "My apps" section to reflect new subscription management process; added Glossary
2023‑Feb‑21Modified document architecture for easier searchability
2022-Apr-26Updated to support Akoya’s new self-service signup process.
2022‑Mar‑29Added "Removing users" and "Troubleshooting MFA" sections
2022‑Mar‑22Original

postman collection troubleshooting in postman

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

account info investment accounts

Akoya products include basic account information such as identifiers, account types, status, descriptions, and everything you need for top level information about an end-user’s account(s).

This account information is available as a standalone endpoint and is also included in results of balances and investment endpoints. To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for account info are returned in JSON in FDX format. Account info includes a common grouping of data and may contain additional data elements for annuity, deposit, insurance, investment, or loan account types.

Endpoint: /accounts-info

API documentation: https://docs.akoya.com/v2/reference/get-accounts-info

Example response

{ "depositAccount": { "accountId": "g833202fb0866d0ad83472c429", "accountType": "CHECKING", "accountNumberDisplay": "xxxxxxxx0071", "currency": { "currencyCode": "USD" }, "description": "Checking Plus", "fiAttributes": [ { "name": "accountOpenedDate", "value": "2020-04-23" }, { "name": "interestPaidLastYear", "value": "3.20" } ], "nickname": "Nickname Checking Plus 0071", "productName": "Checking Plus", "status": "OPEN", "lineOfBusiness": "Personal", "balanceType": "ASSET", "interestRate": 0.0125, "interestRateType": "FIXED", "interestRateAsOf": "2022-03-24T14:15:22Z", "lastActivityDate": "2022-03-24T14:15:22Z" } }

Supported data elements

📘

Note

Account info responses vary by account category.

All account categories

NameTypeDescription
accountIdstringLong-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
accountTypestringThe type of an account. For instance, CHECKING, SAVINGS, 401K, etc.
accountNumberDisplaystringAccount display number for the end user’s handle at owning institution. This is to be displayed by the Interface Provider.
currency[currency]Indicates the currency code used by the account. May also include currency rate.
descriptionstringDescription of account.
fiAttributes[fiAttribute]Data provider-specific attributes.
nicknamestringName given by the user. Used in UIs to assist in account selection
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
statusstringThe status of an account.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
balanceTypestringASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance).
interestRatenumberInterest Rate of Account
interestRateTypestringThe type of interest rate. FIXED or VARIABLE.
interestRateAsOfstring(date-time)Date of account’s interest rate
lastActivityDatestring(date-time)Date that last transaction occurred on account
micrNumberstringMICR Number
parentAccountIdstringLong-term persistent identity of the parent account. This is used to group accounts.
priorInterestRatenumberPrevious Interest Rate of Account
transferInbooleanAccount is eligible for incoming transfers
transferOutbooleanAccount is eligible for outgoing transfers

Deposit accounts

may also include:

NameTypeDescription
annualPercentageYieldnumberAnnual Percentage Yield. If account type = CD, required.
termintegerTerm of CD in months
maturityDatestring(date-time)Maturity date for CDs. If account type = CD, required.

Line of credit accounts

No additional data elements

Loan accounts

may also include:

NameTypeDescription
compoundingPeriodstringnone
loanTermintegerTerm of loan in months
maturityDatestring(date-time)Maturity date is required for CDs
originatingDatestring(date-time)Loan origination date
paymentFrequencystringnone
totalNumberOfPaymentsintegerTotal number of payments

Investment accounts

may also include:

NameTypeDescription
NameTypeDescription
allowedCheckWritingbooleanCheck writing privileges
allowedOptionTradebooleanAllowed to trade options
brokerIdstringUnique identifier FI
calendaryearFor401KstringDate for this calendar year for 401K account
employerNamestringName of the employer in investment 401k Plan
marginbooleanMargin trading is allowed
planIdstringPlan number for Investment 401k plan

Insurance accounts

may also include:

NameTypeDescription
accountCategorystringnone

Annuity accounts

may also include:

NameTypeDescription
annuityProductTypestringnone
annuityValueBasisstringnone
paymentFrequencystringnone

content

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


project plan test

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

oauth implementation styles

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


getting started 1 review how to work with akoya

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

data elements fdx v4 error

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

postman collection customers

Please visit the Postman Akoya workspace for our collections and environment (default values for use in Sandbox). Parameters are defined below.

🚧

Registering with Akoya

In order to use Akoya Postman collections, you must first receive a client id and client secret from Akoya.

Installing and configuring the Postman app

The Postman app is available for the Mac, Windows, and Linux operating systems. For more information, please see Installing and updating Postman.

You may need to change some app defaults depending on your personal preferences or company network environment. Please refer to Setting up Postman for a detailed explanation of Postman settings.

Working with Akoya's Postman collection

Edit access to the collection is restricted. You may:

  • Export the collection to JSON
  • Create a fork in your own personal workspace
Postman API Collection

Postman API Collection

Environment

Using your local copy of the collection, click “Environments” to modify variable values per your needs:

Postman Environment

Postman Environment

Environment parameters

ParameterDescription
accountIdThe id of the consumer’s permissioned account
client_idYour application’s client id from Akoya. Client id/secret combinations are issued for each app in each environment. More details on the client credentials specification: <<https://tools.ietf.org/html/rfc6749#section-3.2.1>>
sandbox: your sandbox app id
prod: a production client id/secret combo will be provided for each recipient app
client_secretYour app’s client secret
connectorThe Akoya identifier for the data provider your user will be logging in to. Usually the same as providerId (below). Akoya takes this identifier and directs the user through the appropriate provider's login flow.
sandbox: mikomo
prod: provider ids are available after onboarding
id_tokenThe id token is used as a bearer token with all data requests. It is a short-lived token which must be refreshed on a periodic basis.
idp_urlThe URL for the identity provider service used in the authentication and authorization flow.
sandbox: (Mikomo) sandbox-idp.ddp.akoya.com
production: idp.ddp.akoya.com
links_prevStored value for paging transactions to previous page.
links_nextStored value for paging transactions to next page.
permission_urlURL for the “Revoke token” endpoint
sandbox: sandbox-permission.api.ddp.akoya.com
production: permission.api.ddp.akoya.com
products_urlThe URL for Akoya products.
sandbox: sandbox-products.ddp.akoya.com
providerIdThe id of the data provider of the account permissioned by the consumer
sandbox: mikomo
redirect_uriThe redirect URI must be registered with Akoya for the appropriate client id. Akoya will validate that the redirect URI exactly matches the one registered to prevent malicious redirects. The redirect URI specifies where the end-user is sent after authentication. More details on redirection: <<https://tools.ietf.org/html/rfc6749#section-3.1.2>>
refresh_tokenA refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires. The refresh token is longer-lived and is only used for maintaining the ID token, not as a token for requesting data.
versionThe version of the Akoya product APIs

Definitions

More information on other parameters used in the collection

ParameterEndpoint(s)Method(s)Description
codetokenGETAuthorization code received in the redirect after authorization. More details on specification: <<https://tools.ietf.org/html/rfc6749#section-1.3.1>>
grant_typetoken, refresh_tokenPOSTDepends on the request (i.e. access token request, refresh token request, client credentials request)

token: authorization_code

refresh: refresh_token

An authorization grant is a credential representing the resource owner's authorization used by the client to obtain an access token. More details on authorization: <<https://tools.ietf.org/html/rfc6749#section-1.3>>

Tips & tricks

  1. You may also test against Postman mock servers by following the instructions provided here.
  2. To view the documentation of the endpoint, click on the documentation icon on the right.
Postman documentation icon

Postman documentation icon

To see all documentation in a new tab, select “View complete collection documentation” at the bottom of the documentation tab.

Postman - View documentation link

Postman - View documentation link

  1. By default, the Postman app uses your operating system's configured proxy to send API requests or access the internet. If needed, you can enter authentication details for the default proxy in the Postman app. You can also configure Postman to use the system proxy or a custom proxy when sending requests. See Postman's "Getting Started" guide for more info.

Testing our endpoints with Postman

These instructions are compatible with Postman v8.2.1+

📌

After installing the Akoya collection, please ensure the parameters in your environment file are correct.

Akoya provides secure (TLS v1.2) access to RESTful APIs that are based on the API/Data Structures as defined by the Financial Data Exchange. All data requests use standard GET and POST methods and must include a bearer token in the authorization header. All responses are returned in JSON format.

End-user authentication

End-users must authenticate with their data providers before you can get their data.

  1. Your application sends users to their provider’s login page via the Akoya platform.

  2. After successful authentication, the provider presents users with an authorization page requesting permission to share their data with your app.

  3. If permission is granted, your application is issued two tokens (id and refresh) from Akoya which give you permissioned access to end-user data.

  4. If end users do not grant permission to share data, Akoya will send them back to your application (to the page of your choosing).

📘

For your convenience, Akoya has made available Mikomo Bank, a mock financial institution, with test users and data. To see the collection of users, visit Mikomo users.

See the “Getting Started” page in the API docs for instructions on setting up a Hub account and getting ready to test our APIs.

See the Mikomo test users document for information on available test accounts. In our sandbox environment, the providerId will always be mikomo.

Below is a brief overview of our endpoints. More thorough documentation is available in our API docs.

Products

📌

Note

The output below is sample output for instructional purposes, and is not specific to any of the data providers on our network.

Akoya product endpoints return JSON objects with a set of account details for one or more accounts at a provider. The path parameter providerId is required. The results will vary by product.

Postman screen - Accounts endpoint

Postman screen - Accounts endpoint

Example of an investments product response

Example of an investments product response

Transactions

The Transactions endpoint returns a JSON object containing transaction histories of consumer-permissioned accounts. When testing this endpoint, you must ensure the Mikomo test account you choose has permissioned transactions associated with it.

This endpoint requires accountId and providerId. You can specify start and end times and a max number of transactions to return.

Postman Screen - Transactions endpoint

Postman Screen - Transactions endpoint

Payment networks

The Payment networks endpoint returns JSON data necessary for facilitating use cases such as payment enablement or account opening. accountId and providerId are required for the payments endpoint.

Postman Screen - Payment networks endpoint

Postman Screen - Payment networks endpoint

Customers

The Customers endpoint returns a JSON response with customer data, supporting use cases such as payment enablement, account opening, or lending/credit enhancements. providerId is required for the Customers endpoint.

Postman Screen - Customers endpoint

Postman Screen - Customers endpoint

Troubleshooting in Postman

If you're having trouble using the Postman app, it may be due to network firewalls, proxy server settings, or other issues you may be able to debug through the Postman Console. Use the Postman Troubleshooting page for tips on debugging and troubleshooting.

Change log

DateUpdate
2022-Oct-04Added two new sections: "Installing and configuring the Postman app" and "Troubleshooting Postman."
2022-Aug-18Updated collections and examples for Akoya API v2 release
2022‑Mar‑16Merged "Getting Started" page into this document; Updated to reflect Akoya API v1; added clarifications
2022‑Feb‑16Added products_url variable to support new Akoya Payments and Customers products. For more on these products, see: Release Notes.

investments

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

coming soon

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


investments holding

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

oauth implementation styles ios

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


why are we making those changes

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


hub manual team management resetting passwords

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

coming soon response

Data Recipient Hub update

We're making it simpler and even more secure to log in to the Hub!

Users of the Data Recipient Hub will soon be able to leverage new technology to log-in quicker, recover account info when necessary, and know with confidence that their account is protected. Updates to look forward to include:

  • Authenticator applications
  • Security keys
  • Recovery codes
  • Biometric devices

To take advantage of these updates, all Hub users will need to re-authenticate—a quick process that should take less than two minutes. This update will not affect any existing configurations or data flows. The Hub experience and existing applications will not change.

Stay tuned for more information and an email from the Akoya Data Recipient Hub with instructions on how to set a new password.

Statements

Akoya is launching a statements product!

The new endpoints are based on FDX 5.1 specifications and will, at launch, support pdf, gif, jpg, tiff, png, and json formats.

Expected Summer 2023.

Preview the API documentation on our v2.1 API docs preview.

Search for statements

Retrieve a list of available statements for the end-user's consented accounts. You may request a date range of up to two years of historical statements (maximum date ranges vary by provider).

The paginated response includes an array of statement information with the end-user's account id and statement details such as statement id, date, description, and status. The results also include links to GET the statement image.

Endpoint: /statements/{version}/{providerId}/{accountId}

Request list

ParameterLocationTypeDescription
accountIdpathstringAccount Identifier
startTimequerystring<date>Start date for use in retrieval of statements (ISO 8601)
endTimequerystring<date>End date for use in retrieval of statements (ISO 8601)
offsetquerystringOpaque cursor used by the provider to send the next set of records
limitqueryintNumber of statements to include. Providers may have varying minimum and maximum values

Response

The response includes a paginated list of available statements. Each statements object may include:

TypeDescriptionexamples
accountIdstringCorresponds to accountId in Account-info10001
statementIdstringIdentity of the statement20001
statementDatestring<date>Date of the statement (ISO 8601)2022-12-02
descriptionstringDescription of statementMonthly Statement for April 2023
statusstringDefines the status of a documentAVAILABLE PROCESSING FAILED
linkshateoasLink object arrayThe Akoya link to the statement

Retrieve a statement

Once you have the statement id from the statement list, use the provided link to retrieve the statement.

Endpoint: /statements/{version}/{providerId}/{accountId}/{statementId}

Request statement

ParameterRequired?LocationTypeDescription
accountIdYpathstringAccount Identifier
statementIdYpathstringStatement Identifier
AcceptYheaderContentTypes: application/pdf image/gif image/jpeg image/tiff image/png application/json*Document format

Akoya Management API v1

Akoya is introducing a new API that will allow you to create and manage your applications and view subscriptions to providers.

Expected Spring 2023.

Upcoming features

Create applications

You’ll be able to create applications (up to fifty at a time) with details such as application name, redirectUris, your website, contacts, description, and links to the app logo. You may also include a link to your app's icon.

Logos and icons must be a transparent PNG, JPG, GIF or WEBP with a minimum width/height of 240px and a maximum width/height of 1024px. The icon must be square.

Subscriptions

To receive data, your app will need subscriptions. A subscription links your application to the Akoya products your app has purchased and the data providers that have activated your subscription.

During app creation, you’ll request subscriptions for each of your applications. After creation, the Management API will allow you to keep track of subscription status as well as the application’s access to Akoya products, subscribed or requested providers, and supported account categories.

Update and delete applications

Using your application credentials, you may update application details including the application name, redirectUris, website link, contacts, description, logo, and icons. Or even delete the application.

Search for data providers and Akoya products

The Management API also provides powerful search features including the ability to list the Akoya products you’ve subscribed to and find providers which support specific Akoya products.

Account number tokenization

Expected Spring 2023.

Akoya is launching the ability for data providers to use tokens instead of account numbers in financial data sharing. We announced this upcoming support in May 2022:

Akoya is the first third-party service provider to provide access to the Secure Token Exchange (STE), a new optional capability from The Clearing House (TCH) that issues tokens for financial institutions’ account numbers, for the RTP® network and EPN, the real-time payments and Automated Clearing House (ACH) networks operated by TCH. Akoya is the first third-party service provider for tokenized payments

What does this mean for data recipients?

This means your end-user’s account information is more secure. Real account numbers aren’t shared, but rather, you’ll use pointers to the account numbers. If you use the Akoya Payments product, you don’t have to do anything. The tokenized account numbers work the same as real account numbers.

For more information, see Reduce fraud risk with tokenized account numbers

And more

Expect more updates from Akoya! We’re working on additional features for the Data Recipient Hub and other new products such as an account holder information endpoint.

More information coming soon!


products use cases

Products

Akoya products include Account info, Balances, Investments, Payments, Transactions, Customers, and Statements. These products allow you to retrieve the data you need for your use case.

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

Akoya products: Balances, Investments, Payments, Transactions, Customers, Statements

ProductDescriptionEndpoint
Account infoBasic account information (included with all other products)./accounts-info/v2/{providerId}
BalancesBalances and rates of bank accounts, credit cards, loans, investments, and more./balances/v2/{providerId}
InvestmentsDetailed information on underlying holdings and positions of investment accounts./accounts/v2/{providerId}/
TransactionsUp to two years of transaction data across account types, including amounts, dates, and descriptions./transactions/v2/{providerId}/{accountId}
CustomersVerified contact information on file, including name, email, address, and phone number./customers/v2/{providerId}/current
PaymentsIdentifiers necessary to make ACH and RTP payments./payments/v2/{providerId}/{accountId}/payment-networks
StatementsList of financial institution statements available to download via PDF​/statements/{version}/{providerId}/{accountId}
/statements/{version}/{providerId}/{accountId}/{statementId}

Use cases

Payment Enablement​Account Opening​Lending & ​Credit Enhancement​Personal Financial ​ManagementWealth Management & ​InvestingBusiness Financial ​Management
Balances

☑️

☑️

☑️

☑️

☑️

☑️

Transactions

☑️

☑️

☑️

☑️

Investments

☑️

Payments

☑️

☑️

Customers

☑️

☑️

☑️

Statements

☑️

☑️

* All use cases include the account info product

  • Account opening: Enable instant account opening and funding without micro-deposits.
  • Business financial management: Offer businesses the ability to aggregate their financial accounts in one place.
  • Lending & credit enhancement: Access bank or brokerage data to better inform lending decisions.
  • Payment enablement: Authorize account-to-account or person-to-person payments with instant account authentication. Payment enablement uses the payments product to request an end-user's payment account identifiers. This is not a payment initiation request.
  • Personal finance management (PFM): Provide users the ability to aggregate their financial accounts in one place.
  • Wealth management & investing: Give users and/or financial advisors the ability to collate investments, assets, and other held-away account information for one sweeping financial picture.

project plan discovery engagement

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

token flow content

To support authorization and ensure data privacy, Akoya uses tokens to verify end-user identity by leveraging the following standards:

  • OAuth 2.0 Protocol that controls authorization to access a protected resource like a web app or API service.

  • OpenID Connect (OIDC). Layer used over OAuth 2.0 that helps authenticate users and convey information about them.

  • JSON Web Tokens (JWT). Standardized container format used to securely transfer data for authentication and authorization.

Consent flow

Authentication & authorization

For you to connect your end-user’s data to your app, the end-user must authenticate with their data provider (bank or financial institution) and authorize data to be shared. Initial authentication remains in effect until either the end-user revokes access to their data or their associated refresh token expires. Authorization and authentication (consent flow) follows these steps:

  1. Your app sends the end-user to their provider’s login page via Akoya using a specific URL with required parameters for authentication. Required parameters are connector, client_id, redirect_uri, response_type, and scope. More details on required parameters are documented in Get authorization code. Possible values for the scope parameter are defined in the next section, Akoya scope values.

  2. The end-user completes account selection and agrees to terms and conditions with their provider. Akoya then sends the end-user to your app’s redirect_uri. Akoya will include an authorization code in the URL when it redirects the end-user back to your app. This code will expire in 5 minutes.

    Example URL sent to your app with authorization code:
    https://recipient.ddp.akoya.com/flow/callback?code=vhmji7kmopeil4jyb57wc4znx&state=

  3. With the authorization code and your app’s details, use the Token endpoint to retrieve a set of tokens (ID token and refresh token). These tokens allow you permissioned access to the end-user’s data.

Consent flow to data

Consent flow to data

OIDC

After the end-user completes account selection and provides consent (Consent flow: step 2 above), the provider issues an access token to Akoya. Akoya will issue your app an ID token (OIDC token—a signed JSON Web Token) and refresh token (Consent flow: step 3 above). Your app will use ID and refresh tokens to communicate with the Akoya network.

Tokens for each end-user are specific to their current account authorization from their provider. To change account selection, the end-user must go through the consent flow again to update the ID and refresh tokens.

For more on OpenID Connect core functionality, see OpenID Connect Core 1.0 incorporating errata set (https://openid.net/specs/openid-connect-core-1_0.html)

Akoya scope values

When your app sends the end-user through Akoya for authentication (Consent flow: step 1 above), the URL may include the following authorization scope values. Scope is used to define access and consent.

These scope types are supported by OIDC but not all may be present.

  • openid - required. Specifies this is an OIDC identity request. Returns iss, sub, aud, exp, iat, and at_hash (defined below).
  • email - Provides access to email and email_verified JWT claims
  • groups
  • profile - Requests access to end-user’s profile values including name
  • offline_access - required. Requests a refresh token be issued

For more on OIDC scope values see: Requesting Claims using Scope Values.

Token usage

Your app will use two types of tokens, ID and refresh tokens.

ID token

The ID token is a short-term token used for requesting data from Akoya product endpoints. This token may be decoded to view identity token claims (see ID token details).

ID token lifetime

The ID token is short-lived. In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, providers often have a shorter expiration for ID tokens. We recommend treating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired. To follow this recommendation, in the case of expiration or after an app uses an ID token for 15 minutes, make a refresh token call to renew the tokens.

Refresh token

The refresh token is longer-term and is tied to the end-user’s authorization. Refreshing tokens allows your app to replace an expired ID token without asking the end-user to reauthenticate and maintains authorization when the end-user is not actively using your app. This token cannot be decoded. See more details regarding refresh tokens below.

🚧

Refresh tokens replace themselves.

With every refresh token call, a new set of refresh and ID tokens will be returned.

Refresh an expired ID token

Refresh an expired ID token

Refresh token lifetime

Refresh tokens may be perpetual, have a rolling expiration, or have a set expiration from the date of authorization. In cases when a provider has rolling refresh token durations, implementing refresh token rotation is recommended.

Next, see:

  • Refresh token details (below)

  • Provider token expiration times are documented in the Data Recipient Hub

Sandbox tokens

In the Akoya sandbox, the ID token may last 24 hours to facilitate testing. However, some providers have a shorter expiration period. We recommend integrating ID tokens as having a life of no longer than 15 minutes and coding to automatically refresh if the ID token has expired.

TypeTest Environment Validity
Authorization Code5 minutes
ID tokenMaximum: 24 hours
Recommended: 15 minutes
Refresh tokenNo Expiration

ID token details

The ID token is a short-lived identifier for the end-user. This token is used as a bearer token with each request to an Akoya API v2 endpoint.

Example ID Token

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }

Akoya ID JWT Claims

These claim types are supported by Akoya but not all may be present.

  • iss - Issuer of the JWT, Akoya
  • sub - Unique value to identify the end-user with the scope specific to the data provider
  • aud - Data recipient
  • exp - Time token will expire in Unix Epoch format
  • iat - The time the token was issued in Unix Epoch format
  • at_hash - Access token hash value
  • email - End-user’s email address
  • email_verified - True if end-user’s email is verified, otherwise false
  • name - End-user's name in displayable form
  • locale - End-user's locale

For more: see the RFC on Identity Token claims.

Expired ID token errors

If you use an expired ID token with a product (data) endpoint, it will produce error code 602.

{ "code": 602, "message": "Customer not authorized" }

If you receive this error, you should refresh the tokens. Then, using the new ID token, make the call for data again.

Refresh token details

The encoded and longer-lived refresh token is used to obtain a new ID token without requiring the end-user to provide credentials or reauthenticate every time the ID token expires.

Refresh tokens are used with the Token API and not as a bearer token in Akoya product calls. A call to the Token API to refresh tokens issues new ID and refresh tokens. This refresh token rotation helps protect applications from token compromise.

The refresh token must be treated as highly confidential.

Encrypted storage is essential to avoid [cross-site scripting](https://www.owasp.org/index.php/Cross-site_Scripting(XSS)) (XSS) attacks._

Refresh token expirations

Some providers set an expiration time for refresh tokens so that a user must reaffirm they want to share their data. There are three types of token expirations:

Perpetual. If a token is perpetual, this means the provider has no set expiration date for the refresh token.

Set expiration. Some tokens have a set expiration period that forces reauthentication after the time indicated. This is commonly a year. After the token’s expiration, the end-user will need to go through the consent flow again.

A rolling expiration. A rolling token expiration means that the token duration is reset every time the token is used. For instance, if your end-user’s bank has specified a rolling 6-month token expiration, you can refresh tokens without reauthentication at any time before the six-month expiration. On refresh, the token expiration will reset to six months from that time. However, if your app hasn’t refreshed tokens in 6 months, the next time the end-user uses your app, they will need to go through the consent flow again.

Refresh token rotation

If your app rotates tokens before a rolling expiration date or if tokens expire and the end-user must go through the consent flow again, you may link the new refresh token with the end-user by matching the sub value in the ID token's JWT claims.

Refresh token error

If you make a request using the Token API with an expired refresh token, you will receive an invalid_request error.

{ "error": "invalid_request", "error_description": "Refresh token is invalid or has already been claimed by another client." }

An expired refresh token requires the app to redirect the end-user back through the consent flow and account selection process to reauthorize and receive a new set of ID and refresh tokens. To match new refresh tokens to your end-user, please see Refresh token rotation above.

Example with expired tokens

If an app requests data through an Akoya product endpoint (such as Accounts Info) using an expired ID token, the app will receive a 602 error. The app should then send a refresh token request to the Token API. If the app then receives an invalid_request error (as seen above) from the token endpoint, this indicates the refresh token is also expired. In this case, the app should send the end-user back to through the consent flow.

A possible token flow if both ID and refresh tokens are expired

A possible token flow if both ID and refresh tokens are expired


investments openorder

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

oauth implementation styles android

Akoya uses the OAuth2/OIDC style. Outlined below are various approaches for device/app integration.

🚧

Do not use insecure web containers

In the get authorization code step outlined in each of the methods detailed below, the URL should be launched from within a browser or a secure web container such as SFSafariViewController or Chrome Custom Tabs. This URL should not be launched within insecure containers that allow the mobile app to intercept user input and thus intercept user credentials.

Website/WebApp

Popup Approach (recommended)

In this flow you’re kicking off the consumer consent OAuth via a popup window.

A diagram explaining the flow of a popup from an app to a login then to the bank

Steps:

  1. User selects the data provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to open a popup window using the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and returns JavaScript telling the browser to close the popup window

Full Redirect (no popup) Approach

In this flow you’re redirecting the user’s current page (your website/web app) to the consumer consent OAuth.

A diagram explaining a browser redirecting from on URL to another and then back to original URL

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the browser to redirect the current page (your app) to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a page you host with the authorization grant code

  5. Your server exchanges the grant code for the ID token: Token

  6. Your server completes the request and lets the user know they are now connected

Mobile App

The industry standard approach is known as deep linking. This is a technique for your app to open the mobile browser, ask the user to authenticate, then your redirect URL links directly back to your app, having it regain focus.

A diagram of mobile screen progression from App to login to either showing the user a screen to show linking or going directly back to original app

Steps:

  1. User selects the provider they’d like to connect (drop down, button, link,…)

  2. Instruct the app to open the browser to the request URL as outlined here: Get authorization code

  3. The user logs in, agrees to terms and conditions, selects accounts

  4. Akoya redirects to a deep link (see below, option A) you’ve setup with the authorization grant code

  5. Your app exchanges the grant code for the ID token: Token

  6. Your app is now ready to pull data

This approach has two different styles (option A or option B), your redirect can either be page on your server (option B) which will then handle a redirect to the deep link you’ve setup. Or (option A) your redirect goes directly back to the app, and your app handles the token exchange.

A screenshot showing an example of how to register the URL schema under the URL Types section

iOS

Setting up your deep link schema:

You’ll want to review: Apple Developer Documentation - Defining a Custom URL Scheme for Your App

  • In the URL Schemes box, specify the prefix you use for your URLs.

  • Choose a role for your app: either an editor role for URL schemes you define, or a viewer role for schemes your app adopts but doesn’t define.

  • Specify an identifier for your app.

The identifier you supply with your scheme distinguishes your app from others that declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain and app name.

Example code handling universal link:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { // Get URL components from the incoming user activity. guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return false } // Check for specific URL components that you need. guard let path = components.path, let params = components.queryItems else { return false } if let authCode = params.first(where: { $0.name == "code" } )?.value, //send code to your server to exchange for an id token //https://docs.akoya.com/reference/get-token return true } else { //invalid redirect return false } }

Android

Setting up your deep link schema:

Start by reviewing: Android Developers Documentation - Create Deep Links to App Content

To create a link to your app content, add an intent filter that contains these elements and attribute values in your manifest:

<action>Specify the ACTION_VIEW intent action so that the intent filter can be reached from Google Search. <data>Add one or more <data> tags, each of which represents a URI format that resolves to the activity. At minimum, the <data> tag must include the android:scheme attribute.

You can add more attributes to further refine the type of URI that the activity accepts. For example, you might have multiple activities that accept similar URIs but which differ simply based on the path name. In this case, use the android:path attribute or its pathPattern or pathPrefix variants to differentiate which activity the system should open for different URI paths.

<category>Include the BROWSABLE category. It is required in order for the intent filter to be accessible from a web browser. Without it, clicking a link in a browser cannot resolve to your app.

Also include the DEFAULT category. This allows your app to respond to implicit intents. Without this, the activity can be started only if the intent specifies your app component name.

The following XML snippet shows how you might specify an intent filter in your manifest for deep linking. The URIs “example://gizmos” and “<http://www.example.com/gizmos”> both resolve to this activity.

<activity     android:name="com.example.android.GizmosActivity"     android:label="@string/title_gizmos" >     <intent-filter android:label="@string/filter_view_http_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->         <data android:scheme="http"               android:host="www.example.com"               android:pathPrefix="/gizmos" />         <!-- note that the leading "/" is required for pathPrefix-->     </intent-filter>     <intent-filter android:label="@string/filter_view_example_gizmos">         <action android:name="android.intent.action.VIEW" />         <category android:name="android.intent.category.DEFAULT" />         <category android:name="android.intent.category.BROWSABLE" />         <!-- Accepts URIs that begin with "example://gizmos” -->         <data android:scheme="example"               android:host="gizmos" />     </intent-filter> </activity>

Notice that the two intent filters only differ by the <data> element. Although it's possible to include multiple <data> elements in the same filter, it's important that you create separate filters when your intention is to declare unique URLs (such as a specific combination of scheme and host), because multiple <data> elements in the same intent filter are actually merged together to account for all variations of their combined attributes. For example, consider the following:

<intent-filter>   ...   <data android:scheme="https" android:host="www.example.com" />   <data android:scheme="app" android:host="open.my.app" /> </intent-filter>

It might seem as though this supports only <https://www.example.com> and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and <https://open.my.app>.

Once you've added intent filters with URIs for activity content to your app manifest, Android is able to route any Intent that has matching URIs to your app at runtime.

Example code to read from the redirect:

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     Intent intent = getIntent();     Uri data = intent.getData(); String code = uri.getQueryParameter("code"); //use code to call your server and exchange token // https://docs.akoya.com/reference/get-token }

Desktop App

Functions basically identically to mobile (see above), here are some starting points to get your schema for deep linking setup.

Windows

Start with the protocol declaration.
Here’s the XML the protocol declaration generated:

<uap:Extension Category="windows.protocol">   <uap:Protocol Name="com.myapp.callback" /> </uap:Extension>

Handling the redirect:

protected override void OnActivated(IActivatedEventArgs args) { Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) { var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); } else { rootFrame.Navigate(typeof(MainPage)); } // Ensure the current window is active Window.Current.Activate(); }

The app simply uses the Launcher.Launch­UriAsync API to deep link into the app. Here’s what that code might look like:

Uri uri = new Uri("com.myapp.callback:?code=1234"); await Launcher.LaunchUriAsync(uri);

Review the following for more information:
App Integration - Linking and Integrating Apps on Windows 10

macOS

Review: Apple Developer Documentation

Clients craft URLs based on your scheme and ask your app to open them by calling the open(_:options:completionHandler:) method of UIApplication. Clients can ask the system to inform them when your app opens the URL.

let url = URL(string: "myapp:callback") UIApplication.shared.open(url!) { (result) in if result { // The URL was delivered successfully! }}

Registering you schema is the same as mobile if you’re using scenes Apple Developer Documentation see above in mobile for more details.


mikomo model response investmenttransaction

Last updated: May 25, 2021

Lightweight

{ "accounts": [ { "investmentAccount": { "accountId": "string", "accountNumber": "string", "accountType": "string", "description": "string", "displayName": "string", "nickname": "string" } } ] }

Properties

NameTypeDescription
accounts[any]
Âť investmentAccountobject
 accountIdstring
 accountNumberstring
 accountTypestring
 descriptionstring
 displayNamestring
 nicknamestring

Account-Details

{ "accounts": [ { "investmentAccount": { "accountNumber": "string", "accountId": "string", "accountType": "string", "displayName": "string", "nickname": "string", "balanceAsOf": "2019-08-24T14:15:22Z", "currentValue": 0, "availableCashBalance": 0, "currency": { "currencyRate": 0, "currencyCode": "string", "originalCurrencyCode": "string" }, "balanceType": "string", "marginBalance": 0, "holdings": [ { "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 } ], "transactions": [ { "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 } ], "contributions": [ null ] } } ] }

Properties

NameTypeDescription
accounts[object]
Âť investmentAccountobject
 accountNumberstring
 accountIdstring
 accountTypestring
 displayNamestring
 nicknamestring
 balanceAsOfstring(date-time)
 currentValuenumber
 availableCashBalancenumber
 currencyobject
 currencyRatenumber
 currencyCodestring
 originalCurrencyCodestring
 balanceTypestring
 marginBalancenumber
 holdings[Holding]Array of holdings
 transactions[InvestmentTransaction]Array of Investment Transactions
 contributions[any]Describes how new contributions are distributed among the available securities

InvestmentTransaction

{ "accountId": "string", "amount": 0, "category": "string", "commission": 0, "description": "string", "fees": 0, "postedTimestamp": "2019-08-24T14:15:22Z", "price": 0, "securityId": "string", "securityIdType": "string", "securityType": "string", "shares": 0, "status": "string", "subCategory": "string", "symbol": "string", "transactionId": "string", "transactionTimestamp": "2019-08-24T14:15:22Z", "unitPrice": 0 }

Properties

NameTypeDescription
accountIdstring
amountnumber
categorystring
commissionnumber
descriptionstring
feesnumber
postedTimestampstring(date-time)
pricenumber
securityIdstring
securityIdTypestring
securityTypestring
sharesnumber
statusstring
subCategorystring
symbolstringTicker / Market symbol
transactionIdstring
transactionTimestampstring(date-time)
unitPricenumber

FiAttribute

{ "name": "string", "value": "string" }

FiAttribute Entity

Properties

NameTypeDescription
namestringName of attribute
valuestringValue of attribute

Holding

{ "averageCost": true, "cashAccount": true, "currentUnitPrice": 0, "fiAttributes": [ { "name": "string", "value": "string" } ], "marketValue": 0, "positionType": "string", "purchasedPrice": 0, "securityId": "string", "securityIdType": "string", "symbol": "string", "units": 0 }

Properties

NameTypeDescription
averageCostboolean
cashAccountboolean
currentUnitPricenumber
fiAttributes[FiAttribute][Data provider-specific attribute]
marketValuenumber
positionTypestring
purchasedPricenumber
securityIdstring
securityIdTypestring
symbolstringTicker / Market symbol
unitsnumber

akoya v2 release whats changing

📌

Do you have feedback? Questions?

If you have feedback or general questions about Akoya API v2, please let us know! Or if you'd like to report a bug or issue, fill out our support form.

What’s changing?

Data recipients on the Akoya network have growing needs to serve their ever evolving customers and use cases. To help recipients on their quest to provide the best experience to their end-users, Akoya is launching new API products to meet these needs. Akoya API v2 will be aligned with the following products: Account info, Balances, Customers, Investments, Payments, Statements and Transactions.

For more details, see a summary of the new v2 endpoints below or check out more detailed documentation in our guides.

1. What will happen to the v1 endpoints that I’m using today?

We will continue to support our v1 endpoints until a timed sunset date. For more, please see Akoya’s versioning guide. All new implementations should use our v2 endpoints. All new features, optimization, and pricing will be supported with v2 endpoints only.

2. Can I migrate from the v1 endpoints to the v2 endpoints?

Yes. Please refer to our migration guide. We're always here to help as required!

3. Should I expect a new payload format or different data elements names?

No. The name of data elements and the format of the payload will remain consistent and compatible with the way the v1 endpoints are structured following the FDX standard.

Why are we making those changes?

In a few words: more consistency, more standardization, more granularity, better use case-fit, a clearer pricing, and more optimized data to use case mapping.

Akoya API v2 will provide data recipients products that are as more understandable and consistent with the market needs and their use cases. Additionally, v2 will also increase standardization across the financial institutions we provide access to, including a standardized path for all endpoints and standardized pagination for our Transactions product.

Additionally, Akoya API v2 will help with our upcoming product-based subscription management. Stay tuned for more information! This will simplify the sign up and onboarding process for recipients and a clearer and more transparent experience for end-users.

Why does it matter to me (a data recipient)? We are providing more granular endpoints that better solve for your use cases and offer more tailored and transparent pricing. Offering a consistent experience across all our data providers is also a key mission for us. That’s why we always drive for standardization across the providers we have on our network, making it easier for you to integrate with Akoya’s network and to use our products.

Let's be specific!

Are you looking to do a balance check before initiating a payment? We got you with our new /balances endpoint.

Are you looking for an easy way to list an end-user’s accounts at a given financial institution? Easily done with our /accounts-basic endpoint

Looking to consistently paginate through historical transactions for one of your end-user’s account? We got you covered with our v2 /transactions endpoint.

And those are just a few examples on how to use our v2 endpoints! We are sure you will find new and innovative ways to leverage them to best serve your end-users.


troubleshooting error codes

Having trouble?

Try the following suggestions before reaching out to Akoya Support:

  • Search this site for your topic using the search box located in the top right of this page or use the keyboard shortcut, CTRL-K.
  • Review our error code documentation for descriptions of errors and common causes.

Information to provide when contacting support

If you still need help, please provide as much information as possible when contacting Akoya Support.

Include such details as:

Do NOT include examples or data which contains personally identifiable or sensitive information.

Error codes

If you receive an error during authentication or authorization, error codes will be returned in the browser either on the page or in the URL.

Data API errors and token API errors will be returned in the response body.

When contacting Akoya Support, please include the error code and message in your correspondence.

Interaction identifier

The x-akoya-interaction-id is an autogenerated interaction identifier, unique to each API call, that is returned in the response header.

In the Postman example below, the x-akoya-interaction-id can be found in the “Headers” tab of the response:

📘

When integrating with Akoya, we suggest implementing a method for capturing or logging the x-akoya-interaction-id for troubleshooting purposes.

Please include the x-akoya-interaction-id associated with the response in your support request.

API request

When corresponding with Akoya Support it is helpful to provide the exact API request that was made. Please indicate not only the requested API endpoint, but any header, request body, path or query parameters that were used as well.

If possible, please include a cURL version of your API request.

Use the --verbose option to ensure that the x-akoya-interaction-id header is included the response.

Example cURL request using the --verbose option:

curl --verbose --location "https://products.ddp.akoya.com/accounts-info/v2/mikomo" --header "Authorization: Bearer {idToken}"

Example Response:

< HTTP/1.1 200 OK
< Date: Thu, 30 Mar 2023 19:03:04 GMT
< Content-Type: application/json; charset=utf-8
< Content-Length: 934
< Connection: keep-alive
< akoyaid:
< x-akoya-interaction-id: Root=1-6425dce8-4101f8c2369211c9567dd54b
< x-envoy-upstream-service-time: 49
< server: istio-envoy

Contact support

Please direct all support issues to support@akoya.com, or submit them via our support center.

Self-service resources include:


hub manual team management

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

payments content

Full account number and bank routing number. Includes bankId, identifier, type, and identifierType.

Results for payments are returned in JSON in FDX format.

Endpoint: /payments

API documentation: https://docs.akoya.com/v2/reference/payment-networks

Example response

{ "paymentNetworks": [ { "transferOut": true, "identifier": "454992210071", "bankId": "125000024", "transferIn": true, "identifierType": "ACCOUNT_NUMBER", "type": "US_ACH" } ] }

Supported data elements

NameTypeDescription
bankIdstringBank identifier used by the payment network ie. Routing Number
identifierstringThe number used to identify the account within the payment network. If identifierType is ACCOUNT_NUMBER, this is the account number.
identifierTypestringType of identifier
typestringType of payment network
transferInbooleanCan transfer funds to the account using this information
transferOutbooleanCan transfer funds from the account using this information

data elements fdx v4 content

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

getting started 6 obtain data

The Akoya Data Access Network (DAN) allows you to connect your app with end-user data from providers available on the network. To help you get started, Akoya provides a sandbox for integrating and testing. The following steps outline how to get started in the sandbox.

1. Review "How to work with Akoya"

The "How to work with Akoya" section outlines requirements and considerations for joining the Akoya network. Review this guide to understand requirements and best practices.

2. Join the Akoya Data Recipient Hub

🚧

Access Required

For access to the Akoya sandbox, you must have an account in the Data Recipient Hub.

Request a Hub account by filling out our request form.

The Data Recipient Hub is an Akoya application for managing your connections in the Akoya DAN. These connections are represented with apps you create in the Hub and their associated credentials (client_id and client_secret).

The Akoya Data Recipient Hub

When this step is complete, you will have a Data Recipient Hub account. Check out our Data Recipient Hub User Manual to learn more about The Hub and what you can do in it.

3. Get your sandbox credentials

A Sandbox app in the Hub

A Sandbox app in the Hub

Once you have an account in the Hub, create your Akoya sandbox app. Your redirect_uri is needed for this step.

Your redirect URI specifies where the end-user is sent after they authenticate with their financial institution. Usually, this is your app. To prevent malicious redirects, your redirect URI must be registered with Akoya. You may use your live application endpoint or a resource in your local dev environment (localhost).

🚧

Localhost redirect works in sandbox only!

You may only use a localhost redirect URI in the sandbox environment!

Redirection overview

Redirection overview

For more details on redirection, refer to the OAuth 2.0 RFC section: Redirection Endpoint.

4. Test token flow

A detailed explanation of token flow is available in the Token flow documentation.

To test in sandbox (For more, see: Sandbox), you must emulate how an end-user consents and selects accounts to share with your app. For this emulation, you may start this consent flow as a user of the Akoya sandbox mock provider, Mikomo Bank.

To create the URL for authorization, see Get Authorization Code and Akoya scope values.

Or, use the shortcut form below (Enter your CLIENT_ID and REDIRECT_URI):

https://sandbox-idp.ddp.akoya.com/auth?connector=mikomo&client_id= &redirect_uri= &response_type=code&scope=openid email profile offline_access



You will be prompted with a Mikomo login screen.

Sign in as a Mikomo end-user. You may use one of the accounts listed here:

Username*How to useProducts
mikomo_7for validation & integration testingall account categories/data elements
mikomo 501-703test errors responsessee error table
Mikomo Bank
mikomo_1, mikomo_2, mikomo_3, mikomo_5, mikomo_6
sample dataInvestment products
mikomo_9view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
mikomo_10view payment-networks, customer payloads, transaction load testingpayment-networks, customer info
Sign in, accept the user agreement, and select which accounts to share

Sign in, accept the user agreement, and select which accounts to share

Authorization

After signing in, select accounts to share and accept terms & conditions.

The end-user (you, in this emulated flow) is now redirected by Akoya to your registered redirect_uri with an authorization code parameter in the URL (highlighted in yellow in the example below):

🚧

Read the URL!

After you click "Approve" your browser may show a "site not found" error. This is normal; the URL will still contain a valid authorization code.

This is the 404 page that may display; this is normal.

This is the 404 page that may display; this is normal.

🚧

Authorization code timeout

The authorization code will timeout in 5 minutes. You must use it to request a token within 5 minutes or you will need to restart the consent flow.

When this step is complete, you will have values for the following parameters: client_id, client_secret, redirect_uri, connector/providerId and code.

5. Request tokens

Use the authorization code retrieved above, your client_id, client_secret, and redirect_uri with the Token API to request the id_token and refresh_token associated with the end-user.

Refer to the Tokens API token endpoint:

When this step is complete, you will have values for the following parameters: client_id, client_secret. redirect_uri, connector/providerId, refresh_token and id_token.

6. Obtain data

With the id_token obtained in Step 4, make a request with Akoya API v2 for the end-user's account data.

Refer to the Akoya API v2 Accounts info endpoint:

When this step is complete, you will have test data for this end-user.

7. ✅ Success!

You now have a familiarity with the account selection process and data retrieval. Your next step is to create your integration plan. A list of considerations is included in the example "Project plan" and "Implementation steps - for developers."

Welcome to Akoya!


Change log

DateUpdate
2022‑Feb‑24Added general clarification updates; added a form to generate authorization URLs

hub manual team management method 1 google authenticator or similar

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.

mikomo all supported data elements

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

migration guide

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

intro to fdx api specs

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


data elements fdx v4

🚧

Please note!

The FDX v4 data element descriptions follow the FDX v4.1 schema. However, each data provider may define individual data elements differently. For any differences or notable exceptions, please see the data provider documentation tabs in the Data Recipient Hub.

Account

Extends and inherits all fields from AccountDescriptor.

FieldTypeDescription
parentAccountIdIdentifierLong-term persistent identity of the parent account. This is used to group accounts.
lineOfBusinessstringThe line of business, such as consumer, consumer joint, small business, corporate, etc.
routingTransitNumberstringRouting transit number (RTN) associated with account number at data provider.
balanceTypeBalanceTypeASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
interestRateNumberInterest Rate of Account
interestRateTypeInterestRateTypeFIXED or VARIABLE
interestRateAsOfTimestampDate of account's interest rate. ISO 8601 date time with milliseconds in UTC time zone.
priorInterestRateNumberPrevious Interest Rate of Account
transferInBooleanAccount is eligible for incoming transfers
transferOutBooleanAccount is eligible for outgoing transfers
micrNumberString64MICR Number
lastActivityDateTimestampDate that last transaction occurred on account. ISO 8601 date time with milliseconds in UTC time zone.
transactionsIncludedBooleanDefault is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows for returning transactions and account details in a single call.
currencyCurrency

AccountDescriptor

Minimal information about the account for use in lightweight arrays.

FieldTypeDescription
accountIdIdentifierLong-term persistent identity of the account. Not an account number. This identity must be unique to the data provider.
errorErrorPresent if an error was encountered while retrieving this account
accountTypeAccountTypeEnum: 401A, 401K, 403B, 529, AUTOLOAN, CD, CHARGE, CHECKING, COMMERCIALLINEOFCREDIT, COMMERCIALLOAN, COVERDELL, CREDITCARD, ESCROW, ESOP, GUARDIAN, HOMEEQUITYLOAN, HOMELINEOFCREDIT, INSTITUTIONALTRUST, INSTALLMENT, IRA, KEOGH, LINEOFCREDIT, LOAN, MILITARYLOAN, MONEYMARKET, MORTGAGE, PERSONALLOAN, ROLLOVER, ROTH, SARSEP, SAVINGS, SMBLOAN, STUDENTLOAN, TAXABLE, TDA, TRUST, UGMA, UTMA, ANNUITY
accountNumberstringFull account number.
accountNumberDisplaystringAccount display number for the end-user's handle at data provider. This is to be displayed by the data recipient.
productNamestringMarketed product name for this account. Used in UIs to assist in account selection
nickNamestringName given by the user. Used in UIs to assist in account selection
statusAccountStatusEnum: OPEN, CLOSED, PENDINGOPEN, PENDINGCLOSE, DELINQUENT, PAID, NEGATIVECURRENTBALANCE
descriptionstringDescription of account

Accounts

An optionally paginated array of accounts.

FieldTypeDescription
TotalintTotal number of results in this collection across all pages

AnnuityAccount

FieldTypeDescription
annuityProductTypeAnnuityProductTypeDERERRED, IMMEDIATE, CURRENCY, SHARES
annuityValueBasisAnnuityValueBasisFIXED, VARIABLE
paymentAmountNumberAmount of the recurring payment.
paymentFrequencyPaymentFrequencyANNUALLY, SEMIANNUALLY, QUARTERLY, MONTHLY, SEMIMONTHLY, BIWEEKLY, WEEKLY, DAILY
paymentStartDateTimeStampDate of first payment; could be a future date. ISO 8601 date tine with milliseconds in UTC time zone.
paymentEndDateTimeStampDate last payment will be made. ISO 8601 date tine with milliseconds in UTC time zone.
totalPaymentCountNumberTotal number of payments that will be produced by the annuity
netPresentValueNumberSurrender or cash balance value
annualIncreaseNumberPercent or dollar amount of annual payment increase
annualIncreaseTypeAnnualIncreaseTypeEnum: FIXED, PERCENT, DOLLAR
periodCertainGuaranteePeriodCertainGuaranteeEnum: NO PERIOD CERTAIN, 5-YEAR, 10-YEAR, 20-YEAR, 30-YEAR

Bills

FieldTypeDescription
totalPaymentDuenumberTotal payment due or next payment due. Monthly payment due for loans.
minimumPaymentDuenumber
dueDateTimestampThe date that the payment is due. ISO 8601 date tine with milliseconds in UTC time zone.
autoPayEnabledbooleanWhether the user's bill is paid automatically
autoPayAmountnumberThe amount of money the user has set to autopay this bill
autoPayDateTimestampThe date the autopayment is set to trigger for this bill. ISO 8601 date tine with milliseconds in UTC time zone.
pastDueAmountnumberThe amount that the user should have already paid. Negative value if user owes money.
lastPaymentAmountnumber
lastPaymentDateTimestampISO 8601 date tine with milliseconds in UTC time zone.
statementBalancenumberThe amount of the last statement. Negative value if user owes money.
statementDateTimestampThe date the statement was issued. ISO 8601 date tine with milliseconds in UTC time zone.

Contribution

FieldTypeDescription
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
Enum: CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentageNumberEmployer contribution match percentage
employerMatchAmountNumberEmployer contribution match amount
employeePreTaxAmountNumberEmployee pre-tax contribution amount
employeePreTaxPercentageNumberEmployee pre-tax contribution percentage
employeeAfterTaxAmountNumberEmployee after tax contribution amount
employeeAfterTaxPercentageNumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountNumberEmployee defer pre-tax contribution match amount
employeeDeferPreTaxPercentageNumberEmployee defer pre-tax contribution match percentage
employeeYearToDateNumberEmployee total year to date contribution
employerYearToDateNumberEmployer total year to date contribution
rolloverContributionPercentageNumberRollover contribution percentage
rolloverContributionAmountNumberRollover contribution Amount

Currency

FieldTypeDescription
currencyRateNumberCurrency rate between original and converted currency
currencyCodeIso4217CodeISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL
originalCurrencyCodeIso4217CodeOriginal ISO 4217 currency code
Enum: AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWL

DepositAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances
currentBalanceNumberBalance of funds in account
openingDayBalanceNumberDay's opening fund balance
availableBalanceNumberBalance of funds available for use
annualPercentageYieldNumberAnnual Percentage Yield
interestYtdNumberYTD Interest
termintTerm of CD in months
maturityDateTimestampMaturity date for CDs. ISO 8601 date time with milliseconds in UTC time zone.

DepositTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeDepositTransactionTypeCHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
payeeString255Payee name
checkNumberintCheck number

Error

An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.

FieldTypeDescription
codestringLong term persistent identifier which can be used to trace error condition back to log information
messagestringend-user displayable information which might help the customer diagnose an error

FiAttribute

Financial platform provider-specific attribute.

FieldTypeDescription
namestringName of attribute
valuestringValue of attribute

FiPortion

FieldTypeDescription
assetClassstringFI-specific asset class
percentNumberPercentage of asset class that falls under this asset

HateoasLink

A "Hypermedia as the Engine of Application State" link.

FieldTypeDescription
href
required
stringexample: "/example/accounts/12345"
actionstringHTTP Method to use for the request
Enum: GET, POST, PATCH, DELETE, PUT
typesContentTypesContentTypes that can be used in the Accept header.

Holding

FieldTypeDescription
holdingIdIdentifierLong term persistent identity of the holding
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
holdingNamestringHolding name or security name
holdingTypeHoldingTypeSTOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTION, OTHER
holdingSubTypeHoldingSubTypeMONEYMARKET, CASH
positionTypePositionTypeLONG, SHORT
heldInAccountHeldInAccountSub-account CASH, MARGIN, SHORT, OTHER
descriptionstringThe description of the holding
symbolstringTicker / Market symbol
originalPurchaseDateTimestampDate of original purchase. ISO 8601 date time with milliseconds in UTC time zone.
purchasedPriceNumberPrice of holding at the time of purchase
currentUnitPriceNumberCurrent unit price
changeInPriceNumberChange in current price compared to previous day's close
currentUnitPriceDateTimestampCurrent unit price as of date. ISO 8601 date time with milliseconds in UTC time zone.
unitsNumberRequired for stock, mutual funds. Number of shares (with decimals).
marketValueNumberMarket value at the time of data retrieved
faceValueNumberRequired for bonds. Face value at the time of data retrieved.
averageCostBooleanCost is average of all purchases for holding
cashAccountBooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
rateNumberFor CDs, bonds, and other rate based holdings
expirationDateTimestampFor CDs, bonds, and other time-based holdings. ISO 8601 date time with milliseconds in UTC time zone.
inv401kSourceInv401kSourceTypeSource for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
taxLotsArray of TaxLotBreakdown by tax lot

InsuranceAccount

Inherits and extends Account.

FieldTypeDescription
accountCategoryEnum: DEPOSIT_ACCOUNT, INVESTMENT_ACCOUNT, LOAN_ACCOUNT, LOC_ACCOUNT, INSURANCE_ACCOUNT
policyPremiumNumberThe amount of the user's premium
policyPremiumTermEnum: MONTHLY, ANNUAL
policyStartDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyEndDateTimestampISO 8601 date time with milliseconds in UTC time zone.
policyCoverageAmountNumberTotal amount of money the user is insured for
billsBills

InsuranceTransaction

An Insurance transaction, inherits and extends Transaction

FieldTypeDescription
transactionTypeEnum: PAYMENT, FEE, ADJUSTMENT, INTEREST

InvestmentAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
allowedCheckWritingBooleanCheck writing privileges
allowedOptionTradeBooleanAllowed to trade options
currentValueNumberTotal current value of all investments
holdingsArray of HoldingArray of holdings
contributionArray of ContributionDescribes how new contributions are distributed among the available securities
vestingArray of VestingProvides the past, present, and future vesting schedule and percentages
investmentLoansArray of InvestmentLoanArray of investment loans
availableCashBalanceNumberCash balance across all sub-accounts. Should include sweep funds.
marginBooleanMargin trading is allowed
marginBalanceNumberMargin balance
shortBalanceNumberShort balance
rolloverAmountNumberRollover amount
employerNamestringName of the employer in investment 401k Plan
brokerIdstringUnique identifier FI
planIdstringPlan number for Investment 401k plan
calendarYearFor401kTimestampDate for this calendar year for 401K account. ISO 8601 date time with milliseconds in UTC time zone.
dailyChangeNumberDaily change
percentageChangeNumberPercentage change
pensionSourceArray of PensionSourceArray of Pension Source

InvestmentBalance

FieldTypeDescription
balanceNamestringName of the balance
balanceDescriptionstringDescription of balance
balanceTypeInvestmentBalanceTypeAMOUNT, PERCENTAGE
balanceValueNumberValue of balance name
balanceDateTimestampDate as of this balance. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentLoan

FieldTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalanceNumberInitial loan balance amount
loanStartDateTimestampStart date of the loan. ISO 8601 date time with milliseconds in UTC time zone.
currentLoanBalanceNumberCurrent loan principal balance amount
dateAsOfTimestampDate and time of current loan balance. ISO 8601 date time with milliseconds in UTC time zone.
loanRateNumberLoan annual interest rate for the loan
loanPaymentAmountNumberLoan payment amount
loanPaymentFrequencyLoanPaymentFrequencyANNUALLY, BIMONTHLY, BIWEEKLY, FOURWEEKS, MONTHLY, OTHER, QUARTERLY, SEMIANNUALLY, TWICEMONTHLY, WEEKLY
loanPaymentInitialNumberInitial number of loan payments
loanPaymentsRemainingintRemaining number of loan payments
loanMaturityDateTimestampExpected loan end date. ISO 8601 date time with milliseconds in UTC time zone.
loanInterestToDateNumberTotal interest paid to date on this loan
loanTotalProjectedInterestNumberTotal projected interest to be paid on this loan
loanNextPaymentDateTimestampThe next payment date for the loan. ISO 8601 date time with milliseconds in UTC time zone.

InvestmentTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeInvestmentTransactionTypePURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
sharesNumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
faceValueNumberCash value for bonds
priceNumberUnit purchase price
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
securityTypeSecurityTypeSTOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER, BOND
symbolstringTicker symbol
markupNumberPortion of unit price that is attributed to the dealer markup
commissionNumberTransaction commission
taxesNumberTaxes on the trade
feesNumberFees applied to the trade
loadNumberLoad on the transaction
inv401kSourceInv401kSourceTypeSource of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
confirmationNumberstringConfirmation number of the transaction
fractionalCashNumberCash for fractional units (used for stock splits)
incomeTypeIncomeTypeType of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC
oldUnitsNumberNumber of shares before split
splitRatioNumeratorNumberSplit ratio numerator
splitRatioDenominatorNumberSplit ratio denominator
newUnitsNumberNumber of shares after split
subAccountSecSubAccountTypeSub-account security Type: CASH, MARGIN, SHORT and OTHERS
subAccountFundSubAccountTypeFrom which account money came in: CASH, MARGIN, SHORT and OTHERS
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanPrincipalNumberHow much loan pre-payment is principal
loanInterestNumberHow much loan pre-payment is interest
payrollDateTimestampThe date for the 401k transaction was obtained in payroll. ISO 8601 date time with milliseconds in UTC time zone.
priorYearContribBooleanIndicates this buy was made using prior years contribution. TRUE or FALSE
withholdingNumberFederal tax withholding
taxExemptBooleanTax-exempt transaction TRUE or FALSE
gainNumberFor sales
stateWithholdingNumberState tax withholding
penaltyNumberIndicates amount withheld due to a penalty
runningBalanceNumberRunning balance of the position
unitPriceNumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsNumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypeUnitTypeSHARES, CURRENCY
transactionReasonTransactionReasonReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
accruedInterestAmountAccrued Interest
transferActionstringTransfer direction [IN or OUT]
positionTypePositionTypeLONG, SHORT

LineItem

FieldTypeDescription
descriptionstringThe description of the line item
amountNumberThe amount of money attributable to this line item
checkNumberintCheck number
memoString255Secondary item description
referencestringA reference number
imageIdsArray of stringArray of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

LoanAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date for balances. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance of loan
escrowBalanceNumberEscrow balance of loan
originalPrincipalNumberOriginal principal of loan
originatingDateTimestampLoan origination date. ISO 8601 date time with milliseconds in UTC time zone.
loanTermintTerm of loan in months
totalNumberOfPaymentsintTotal number of payments
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDate of next payment. ISO 8601 date time with milliseconds in UTC time zone.
paymentFrequencyPaymentFrequencyDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
compoundingPeriodCompoundingPeriodDAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
payoffAmountNumberPayoff amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
maturityDateTimestampMaturity date. ISO 8601 date time with milliseconds in UTC time zone.
interestPaidYearToDateNumberInterest paid year to date

LoanTransaction

Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLoanTransactionTypePAYMENT, FEE, ADJUSTMENT, INTEREST

LocAccount

Extends and inherits all fields from Account.

FieldTypeDescription
balanceAsOfTimestampAs-of date of balances. ISO 8601 date time with milliseconds in UTC time zone.
creditLineNumberCredit limit
availableCreditNumberAvailable credit
nextPaymentAmountNumberAmount of next payment
nextPaymentDateTimestampDue date of next payment. ISO 8601 date time with milliseconds in UTC time zone.
principalBalanceNumberPrincipal balance
currentBalanceNumberCurrent balance LOC
minimumPaymentAmountNumberMinimum payment amount
lastPaymentAmountNumberLast payment amount
lastPaymentDateTimestampLast payment date. ISO 8601 date time with milliseconds in UTC time zone.
pastDueAmountNumberPast Due Amount
lastStmtBalanceNumberLast Statement Balance
lastStmtDateTimestampLast Statement Date. ISO 8601 date time with milliseconds in UTC time zone.
pointsAccruedNumberPoints accrued
currentRewardsBalanceNumberCurrent rewards balance
pointsRedeemedNumberPoints redeemed
purchasesAprNumberPurchases APR
advancesAprNumberAdvances APR
cashAdvanceLimitNumberCash advance limit
availableCashNumberAvailable cash
financeChargesNumberFinance charges

LocTransaction

A line of credit transaction. Extends and inherits all fields from Transaction.

FieldTypeDescription
transactionTypeLocTransactionTypeCHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
checkNumberintCheck number

OpenOrder

FieldTypeDescription
orderIdIdentifierLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security
securityIdTypeSecurityIdTypeSecurity identifier type
symbolstringMarket symbol
descriptionstringDescription of order
unitsNumberNumber of units (shares or bonds etc).
orderTypeOrderTypeType of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
orderDateTimestampOrder date. ISO 8601 date time with milliseconds in UTC time zone.
unitPriceNumberUnit price
unitTypeUnitTypeType of unit SHARES, CURRENCY
orderDurationOrderDurationThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountSubAccountTypeCASH, MARGIN, SHORT, OTHERS
limitPriceNumberLimit price
stopPriceNumberStop price
inv401kSourceInv401kSourceTypeFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PageMetadata

FieldTypeDescription
nextOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
prevOffsetstringOpaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific.
example: "2"
totalElementsintegerTotal number of elements
example: 3

PaymentDetails

FieldTypeDescription
principalAmountNumberThe amount of payment applied to principal
interestAmountNumberThe amount of payment applied to interest
insuranceAmountNumberThe amount of payment applied to life/ health/accident insurance on the loan
escrowAmountNumberThe amount of payment applied to escrow
pmiAmountNumberThe amount of payment applied to PMI
feesAmountNumberThe amount of payment applied to fees

PensionSource

FieldTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDateTimestampDate benefit was calculated. ISO 8601 date tine with milliseconds in UTC time zone.
frequencyPaymentFrequencyFrequency of Payment
startDateTimestampAssumed retirement date - As of date amount is payable. ISO 8601 date tine with milliseconds in UTC time zone.

Portion

FieldTypeDescription
assetClassAssetClassDOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
percentNumberPercentage of asset class that falls under this asset

TaxLot

FieldTypeDescription
originalPurchaseDateTimestampLot acquired date. ISO 8601 date tine with milliseconds in UTC time zone.
quantityNumberLot quantity
purchasedPriceNumberOriginal purchase price
costBasisNumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred
currentValueNumberLot market value
positionTypePositionTypeLONG, SHORT

Transaction

FieldTypeDescription
accountIdIdentifierCorresponds to AccountId in Account
transactionIdIdentifierLong term persistent identity of the transaction (unique to account)
referenceTransactionIdIdentifierFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
postedTimestampTimestampThe date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp. ISO 8601 date tine with milliseconds in UTC time zone.
transactionTimestampTimestampThe date and time that the transaction was added to the server backend systems. ISO 8601 date tine with milliseconds in UTC time zone.
descriptionstringThe description of the transaction
memoString255Secondary transaction description
debitCreditMemoDebitCreditMemoDEBIT, CREDIT, MEMO
categorystringTransaction category, preferably MCC or SIC.
subCategorystringTransaction category detail
referencestringA tracking reference identifier
statusTransactionStatusPENDING, MEMO, POSTED, AUTHORIZATION
amountNumberThe amount of money in the account currency
foreignAmountNumberThe amount of money in the foreign currency
foreignCurrencyIso4217CodeThe ISO 4217 code of the foreign currency
imageIdsArray of stringArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
lineItemArray of LineItemBreakdown of the transaction details
fiAttributesArray of FiAttributeArray of FI-specific attributes
linksArray of HateoasLinkArray of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt

Vesting

FieldTypeDescription
vestingDateTimestampVesting date. ISO 8601 date tine with milliseconds in UTC time zone.
symbolstringSecurity symbol
strikePriceNumberStrike price
vestingPercentageNumberVesting percentage
otherVestAmountNumberOther vest amount
otherVestPercentageNumberOther vest percentage
vestedBalanceNumberVested balance
unVestedBalanceNumberUnvested balance
vestedQuantityNumberVested quantity
unVestedQuantityNumberUnvested quantity

project plan

The following project plan outlines steps in integrating with the Data Access Network. The plan covers engagement steps, scope, and development effort.

🚧

Time estimates are approximate!

All time estimates provided in these documents are ballpark figures for planning purposes only. Many factors beyond Akoya’s control affect project timelines, so this content is intended as an aid in developing your own project plans.

Discovery & engagement

Estimated timeframe: 4 weeks

TaskDescription
Review Guides and API DocumentationUnderstand technical specifications for the authentication process and best practices. Review mock financial institution (Mikomo) requests and responses. Understand available products.
Access to the Data Recipient HubYour team's first user should join the Data Recipient Hub with Sandbox access where you can:
1. Share access with your colleagues.
2. Manage your client ID, secret, and redirect URI.
3. See available data providers, offered account types, and data elements.
Test calls and responsesAt this step in the project, you may test Akoya API v2 calls via Postman or the Try It feature in the API documentation.

Initial integration & connectivity

Estimated timeframe: 12 weeks

TaskDescription
Map data to your systemsLeveraging the data inventories per provider, map data to your internal databases/resources. Refer to the Data Recipient Hub for inventories and Sandbox documentation for specifications and responses (via API or Postman)
Enable data provider selectionBuild (or integrate into existing) the ability for new and existing end-users to select data providers (with logos, optional) so that the user may authenticate and select accounts for sharing.
Obtain consentPresent to and retain consent from the end-user to access data from the selected data provider. Reference: consent language in contract

Authenticate & select accounts

Estimated timeframe: 2-3 weeks

Establish connectivity to the data provider (Mikomo in Sandbox) so the end-user may authenticate and select accounts to share or revoke. The resulting per customer/per data provider tokens and client id/secret are retained securely.

For more information, see the technical implementation checklist: Implementation steps - for developers.

Obtain data

Estimated timeframe: 2-3 weeks

Based on your use case, integrate to the Akoya API v2 endpoints, validate any errors, ingest data, and display data for the end-user

For more information, see the technical implementation checklist: Implementation steps - for developers.

Test

Estimated timeframe: 2 weeks

Validate end-to-end experience:

  • Data provider selection
  • Consent and authentication
  • Data retrieval, display, and processing
  • Error handling

Prepare for Go Live

Estimated timeframe: 4 weeks

This work can be done in parallel with the integration work.

TaskDescription
Sign ContractAkoya has a standard terms of use outlining data access rights and consumer consent, security provisions, and risk allocation. The contract must be signed prior to production access.
Determine migration planDefine rollout plan: define target timeline, size and frequency of tranches, migration of existing users, enablement of new users, order of data provider implementation, etc. Share your plan with Akoya’s Partner Success Manager for capacity planning.
Request production credentialsWhen you are ready, request production access in the Data Recipient Hub. Client IDs and secrets for production apps, provider IDs, and production endpoints will be available in the Data Recipient Hub. Data providers will authorize you to access certain data clusters, products, and/or data elements as relevant to your use case.
Answer Security and Risk Review QuestionsAkoya uses KY3P to perform security assessments; your information security team will need to be engaged. The SRR must be approved with any remediation items defined, prioritized, and resolved if high or critical.

Go Live

Estimated timeframe: 1-2 weeks

TaskDescription
Register additional Apps, if applicableCreate subsequent Apps (the end-user facing app in the chain) per business needs on the Data Recipient Hub.
Validate in productionSmoke test in production among beta users, employees, and/or “friends of the firm” to validate consent flow and data integrity
Implement rollout planMigrate existing users and new users by App and/or provider

migration guide migration considerations

📘

Notice

Akoya has launched the v2 of its endpoints (in beta through October 2022). This document is intended to help data recipients currently using v1 to migrate to v2.

Migration considerations

Overview

Changes you may need to make to migrate to Akoya API v2:

  • Versioning support. Akoya limits breaking changes to major API versions. To reduce the need for large, breaking-change updates, Akoya will continue to improve its products by releasing minor updates on a continual basis. These minor updates are non-breaking, backward-compatible improvements. When migrating to Akoya API v2, please plan for these minor version updates and implement in a way to allow for these non-breaking changes. Please see the versioning guide for more details.
  • Transaction pagination. With Akoya API v1, paging through transaction data could require different implementations per provider. To standardize paging, we’ve introduced link-based pagination. All paging implementations from Akoya API v1 will need to be migrated to using Akoya-generated links instead. For more information, see: Link-based pagination.
  • Endpoint path names. Akoya has introduced products to allow a more streamlined approach to data access. To support our new products, all new endpoints include the Akoya version in the path and no longer include the FDX version. We’ve also named the endpoints to more closely coincide with our products rather than using a single FDX /accounts endpoint. For example, if your use case requires balance data, the endpoint will now be: https://products.ddp.akoya.com/balances/v2/. For a full list of endpoints, see: [Endpoint summary] (#endpoint-summary "Endpoint summary")
  • Data element support.
    • In the near future, to support our new products, the following data elements will no longer be available through the Akoya API v1 /accounts endpoint. However, these data elements will be available in the Payments product:
      • accountNumber
      • routingTransitNumber
    • Data elements available through the Akoya API v1 /accounts details calls will now be available through either the Accounts info, Balances, or Investment products. Please consider your use case to determine which products will continue to provide the data your app requires.
      As a general guide, detailed data for all account categories except investment accounts can be retrieved through the Balances product. If you need more detailed investment data, please consider the Investments product instead.
  • FDX lightweight call. The new /accounts-info endpoint will replace the FDX accounts lightweight call. Differentiating between details and lightweight with a parameter using the /accounts endpoint is no longer necessary.

While the list above covers the most significant migration considerations, please read the full details below to determine if other changes may impact your app.

Update details

Current support

🚧

Akoya API v1 sunset in sandbox

The Akoya API v1 data endpoints have been retired in sandbox. Please see this changelog post for further details.

  • Akoya API v1, modeled after FDX’s “Financial Data Exchange (FDX) v4.1”
  • Akoya API v2, modeled after FDX’s “Financial Data Exchange (FDX) v4.5” where possible with a few variations specific to Akoya

Akoya API v2

  • Data elements follow FDX 4.5 guidelines where possible.

    • Exception: Akoya does not support annuityAccount inheriting from accounts.
  • All new endpoints include the Akoya version in the path and no longer include the FDX version.

    • Example: https://products.ddp.akoya.com/balances/v2/
  • Link-based pagination standardization.

  • Akoya endpoints

    • /accounts-info/v2/{providerId}/

    • /accounts/v2/{providerId}/

    • /balances/v2/{providerId}/

    • /transactions/v2/{providerId}/{accountId}

    • /payments/v2/{providerId}/{accountId}/payment-networks

    • /customers/v2/{providerId}/current

    • /statements/v2/{providerId}/{accountId}

    • /statements/v2/{providerId}/{accountId}/{statementId}

Endpoint summary

Akoya productEndpoint pathAkoya products included in results
Accounts Info/accounts-info/v2/{providerId}/Account Info only
Balances/balances/v2/{providerId}/Account Info + Balances
Investments/accounts/v2/{providerId}/Account Info + Balances + Investments
Customer info/customers/v2/{providerId}/currentCustomers
Payment networks/payments/v2/{providerId}/{accountId}/payment-networksPayments
Transactions/transactions/v2/{providerId}/{accountId}Transactions
Statements/statements/v2/{providerId}/{accountId}Statements
Statements/statements/v2/{providerId}/{accountId}/{statementId}Statements

Endpoint details:

Accounts Info (/accounts-basic/v2/{providerId}/) New

  • A list of accounts with basic info data
  • Replaces the FDX accounts lightweight concept
  • Typical use: populating an account selection screen for the end-user or high-level information for a list of accounts
  • Responses include
    • A basic version of account info data elements such as accountType, productName, status, or currency.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Balances (/balances/v2/{providerId}/) New

  • Account info and balances data
  • Typical use: displaying balance information to the end-user or conducting balance checks before initiating a payment
  • Responses include
    • Both account info and balances data elements such as accountType, currency, balanceAsOf, availableBalance, currentBalance, creditLine, or availableCredit.
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Investments (/accounts/v2/{providerId}/) New

  • A comprehensive version of account info, balances, and investments data
  • Typical use: retrieve a comprehensive view of all account information for PFM or Wealth Management
  • Responses include
    • a comprehensive version of account info, balances, and investments data elements such as marginBalance, availableCashBalance, holdings (e.g., holdingType, symbol, units), or contribution (e.g., employerYearToDate, employeeYearToDate).
    • Returns multiple accounts or query specific accounts
    • Supports all account categories

Transactions (/transactions/v2/{providerId}/{accountId}) Updated

  • Added ability to page transaction results in a standardized way
  • The versioning has been updated to /v2
  • all 200 responses will return a pageLinks object with links (when applicable) for paging backward and forward in results (see: link to pagination documentation)
  • Responses include
    • From a single account, a list of transactions data elements such as transactionId, postedTimestamp, description, category, amount, or transactionType.
    • Supports all applicable account categories

Payment Networks (/payments/v2/{providerId}/{accountId}/payment-networks) No Changes

  • No changes to the data elements
  • The versioning has been updated to /v2
  • Responses include
    • Payment network related data elements such as bankId (i.e., routing number), identifier (i.e., account number), identifierType (e.g., tokenized account number), or type (e.g., US_ACH, US_RTP)
    • Returns a single account
    • Supports all applicable account categories

Customer Info (/customers/v2/{providerId}/current) Updated

  • Added support for the CustomerToAccountRelationship FDX entity which includes:
    • accounts array of:
      • accountId Id of end-user’s account
      • relationship relationship between the listed account and the current customer, for example: PRIMARY, SECONDARY_JOINT, or POWER_OF_ATTORNEY
  • No changes to the existing data elements
  • The versioning has been updated to /v2
  • Responses include
    • Customer info related data elements such as name, email, addresses, telephones, or relationships (i.e., account holder relationship to an account)
    • Returns end-user information which is not account category specific

Statement List (/statements/{version}/{providerId}/{accountId}) New

  • Allows retrieval of statements for your end-user's consented accounts (up to two years of historical statements, depend on provider)
  • Typical use: retrieve a list of statements for the consented account
  • Responses include
    • An array of statements, where each includes accountId, statementId, description, and status.
    • links to GET individual statements in PDF, GIF, JPG, TIFF, or PNG format

Statement (/statements/{version}/{providerId}/{accountId}/{statementId}) New

  • Allows the retrieval of an individual statement in PDF, GIF, JPG, TIFF, or PNG format by passing in the statementId path parameter obtained in the Statement List response. The file format is specified by including a value for Accept in the header. Accepted values are:
    • application/pdf
    • image/gif
    • image/jpg
    • image/tiff
    • image/png
  • Typical use: retrieve a statement image for the consented account
  • Responses include:
    • an image of the account statement identified by statementId

unique keys and values

Unique values across the Akoya DAN can be used to keep data and end-user account linking in sync. The following outlines keys with unique values and some possible scenarios where they’ve been used. Your use case may be different, but these values can help tie together the end-user across systems.

id_token/refresh_token

The id_token and refresh_token are unique tokens in the Akoya system. No two are the same across apps, regardless of user or data provider. For more details about the format, storage, duration please see the Token Flow document.

The id_token is a JWT token, and as such has information inside of it. One of the most meaningful parts for uniqueness is the sub claim.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
YESYESYESNO

sub claim

The sub (short for subject) claim is a unique identifier within the id_token. This is a unique identifier for the user for the issuing data provider and will remain consistent between refreshes and re-links for the same user.

Please note: The user may have multiple logins to a single data provider (i.e. one personal login, one business login). This value will be unique for each login.

{ "iss": "https://sandbox-idp.ddp.akoya.com/", "sub": "CkExamplehtaWtvbP9fMRIGbWlrb21v", "aud": "recipient", "exp": 1626206304, "iat": 1626119904, "at_hash": "VZ_ExJP9zAhtWa5KxCTX-CQ", "email": "mikomo_1", "email_verified": false, "name": "KLDJFSDI4909DPSJNIO" }
Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NOYESYESNO

The sub claim value is not guaranteed to be unique throughout the Akoya system, just unique to the data provider. This claim's persistent value can be leveraged if the end-user has to relink and you need to connect their previous login with the new.

While every sub claim corresponds to an individual login with the data provider, each sub can represent multiple accounts.

Account ID

The accountId is tied to a specific claim and therefore a specific id_token/refresh_token. As the accountId(s) is unique per claim, this identifier helps to make sure the user is sharing the same account(s) and allows continuity between token refreshes.

Unique per AkoyaUnique Data ProviderUnique Per UserUnique on Refresh
NONOYESNO

The accountId is not guaranteed unique within the Akoya system at large and is not guaranteed to be unique across the data provider. It is meant to be unique and persistent for a given sub claim.


redirecturi change log

Overview

Akoya uses the OAuth 2.0 framework to enable fintech applications to obtain access via http to end-user data at participating financial institutions.

OAuth 2 puts the end-user in control of the authentication workflow. Users must grant permission via Akoya directly to their banks' authorization servers before any data is sent back to the application. No user credentials are ever exposed to either Akoya or the application.

After the authentication process is complete, the financial institution needs to send the protected financial data somewhere so the application can consume it.

This “somewhere” is a redirect URI, also referred to as a callback or a redirection endpoint. See the “Website/Webapp” section of our OAuth implementation guide for more details.

Why registration is important

Because the user’s financial institution is returning sensitive data, you must register at least one redirect URI for your application in the Data Recipient Hub (the Hub). This is a security measure which prevents malicious redirects to rogue servers. Only authorization requests with Akoya-registered redirect URIs are accepted.

After you register your redirect URI(s) in the Hub, you’ll receive a client ID and client secret, which are used for authentication purposes when requesting tokens. The client ID is public information; however it should be protected. The client secret is effectively the password for your application and must be protected.

Requirements

You may use a localhost address only when testing in our sandbox environment. Otherwise, you should use an externally-accessible address.

You must provide an absolute path for your redirect URI, both when you register it in the Hub and when you include it in your application code.

🚧

The redirect URI in your code must be identical to the one registered in the Hub.

See our OAuth guide for more details on implementing OAuth for web, mobile, and desktop.

Resources

Change log

DateUpdate
2022‑Oct‑11Original

intro to fdx benefits for data providers

The Financial Data Exchange (FDX) specifies a common, interoperable, royalty-free standard and operating framework for financial data sharing and secure authentication. It also provides user experience and consent guidelines.

FDX is a nonprofit, independent subsidiary of the Financial Services Information Sharing and Analysis Center (FS-ISAC), an industry consortium with the mission of ensuring resilience and continuity of the global financial services infrastructure. Operating in the US and Canada, FDX is a technical organization which does not involve in policy discussions.

FDX Members

As of August 2021, FDX has approximately 197 members including financial institutions, aggregators, financial industry groups, consumer advocacy groups, permissioned parties, and other financial services organizations.

Data providers that are on the board of both Akoya and FDX are:

  • Bank of America
  • Capital One
  • Citi
  • Fidelity Investments
  • JPMorgan Chase & Co.
  • PNC
  • TD Bank
  • Truist
  • US Bank
  • Wells Fargo

Some FDX data recipients:

  • American Express
  • Experian
  • Finicity
  • Fiserv
  • H&R Block
  • MorningStar
  • MX
  • Plaid
  • Quicken
  • Truelayer
  • Yodlee

If you are interested in joining FDX, you may explore membership options and read the organizational overview: "The Global Industry Standard for Consumer Access to Financial Data".

Benefits

FDX specifications unify financial data sharing implementations which can vary from organization to organization. By adopting the FDX API as an industry standard, data providers and data recipients no longer need to spend extra time and resources resolving problems caused by inconsistent data connectivity, quality, and governance. Consumers will also benefit from a consistent standard across financial services platforms for strengthened control, access, transparency, traceability, and security of their financial data.

📌

Membership not required

While data providers and recipients receive the value of FDX with the Akoya Data Access Network, the Network does not require data providers or data recipients to be FDX members.

Benefits for data providers

The benefits of FDX standards include risk reduction and improved privacy. The FDX API supports Open ID Connect (OIDC) token-based access that eliminates risks posed by “held-away credentials[1].” The consent from the consumer for data sharing is captured both at the application interface (e.g. the fintech app) and the provider's data source. This clear and secure consent flow allows consumers to better manage data that they want to share with third parties[2].

Benefits for data recipients

The interoperability of FDX standards allows recipients to access financial data from providers easily and securely. Akoya, following the FDX standard with some customizations, translates responses from providers through data mapping and API integration to render a unified format for recipients. This unified format ensures consistent data to ease integration efforts. It also reduces time spent with bespoke integrations and disparate data structures.

API specs

Formerly FS-ISAC's Durable Data API (DDA), the FDX API specification is updated twice a year. The specifications provide the introduction and transmission protocol details for implementing with RESTful APIs. Akoya leverages these standards to enable financial data sharing via secure tokenized access.

FDX provides fee-free access to specifications by accepting the intellectual property agreement. Join or request API access here.

Best Practices

The FDX 2020 Fall Release added UX guidelines with widespread acceptance from the FDX API implementers, including major financial institutions. The FDX UX Guidelines[3] specify design recommendations for permissioning. The guidelines also describe the concepts of financial data sharing, data flow, and an end-user grant consent journey for financial data sharing.

According to the guidelines, the financial data flow process from a provider to a recipient has the following steps:

  1. The recipient initiates data sharing when the end-user decides to access their accounts.
  2. The end-user identifies the provider where they hold their accounts.
  3. The provider inspects the request and allows the end-user to grant consent for data sharing.

[1]: Held-away (shared) credentials or screen scraping allows a 3rd party to hold an end-user's credentials.

[2]: If you are interested in learning more about the benefits of FDX, you may explore its member benefits page.

[3]: Financial Data Exchange User Experience (UX) Guidelines v1.0. Dec. 2020, fdx.atlassian.net/wiki/download/attachments/772964368/UX%20Guidelines%20v1_0.pdf?api=v2.


mikomo mikomo 3

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

investments equitygrants

The Akoya Investments product combines basic end-user account information with balance data and extended investment details to provide your end-user with robust, in-depth insight into their investments.

This endpoint returns all data available in both the Account info and Balances products plus all other available data for investment accounts including holdings, contributions, vesting, and more (listed below). To use this product, you must have the end-user’s consent and their associated ID token for permissioned data.

Results for investments are returned in JSON in FDX format. While this endpoint is needed to retrieve extended data for the investment account category, you may also use it for other account categories (annuity, deposit, insurance, line of credit, or loans). If used for account categories other than investment, you will receive the same data as with the balances product.

Endpoint: /accounts

API documentation: https://docs.akoya.com/v2/reference/get-accounts

Example response

{ "accountId": "426444887", "accountType": "IRA", "accountNumberDisplay": "*****5071", "currency": { "currencyCode": "USD" }, "description": "Rollover IRA", "fiAttributes": [], "nickname": "My IRA", "productName": "RolloverIRA Investment Acct", "status": "OPEN", "balanceType": "ASSET", "interestRateType": "FIXED", "interestRateAsOf": "2022-04-08T08:46:14", "lastActivityDate": "2022-04-08T08:46:14", "brokerId": "FID", "margin": false, "availableCashBalance": 69746.83, "balanceAsOf": "2022-04-08T08:46:14", "balanceList": [ { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Minimumequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Regulatorynetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Usablenetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashcreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Networthmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Memoadjustment", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarginshortmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Liquidationequitycall", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Totalsecuritiesmarketvalue", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Corefundamount", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmoneymarket", "balanceType": "AMOUNT", "balanceValue": 83268.38, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Fullnetworth", "balanceType": "AMOUNT", "balanceValue": 153015.21, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Nettradedatecreditbalance", "balanceType": "AMOUNT", "balanceValue": 0, "currency": { "currencyCode": "USD" } }, { "balanceDate": "2022-04-07T00:00:00", "balanceName": "Cashmarketvalue", "balanceType": "AMOUNT", "balanceValue": 69746.83, "currency": { "currencyCode": "USD" } } ], "currentValue": 153015.21, "marginBalance": 0, "holdings": [ { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 8.01, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "AB HIGH INCOME ADVISOR", "heldInAccount": "CASH", "holdingName": "AB HIGH INCOME ADVISOR", "holdingType": "MUTUALFUND", "marketValue": 49566.83, "positionType": "LONG", "securityId": "01859M408", "securityIdType": "CUSIP", "symbol": "AGDYX", "units": 6188.119 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 1, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "GOVERNMENT CASH RESERVES", "heldInAccount": "CASH", "holdingName": "GOVERNMENT CASH RESERVES", "holdingType": "MUTUALFUND", "marketValue": 83268.38, "positionType": "LONG", "securityId": "316067107", "securityIdType": "CUSIP", "symbol": "FDRXX", "units": 83268.38 }, { "averageCost": false, "changeInPrice": 0, "currency": { "currencyCode": "USD" }, "currentUnitPrice": 201.8, "currentUnitPriceDate": "2022-04-08T04:14:30", "description": "FINANCIAL SERVICES GROUP COM USD5", "heldInAccount": "CASH", "holdingName": "FINANCIAL SERVICES GROUP COM USD5", "holdingType": "STOCK", "marketValue": 20180, "positionType": "LONG", "securityId": "693475105", "securityIdType": "CUSIP", "symbol": "PNC", "units": 100 } ] }

Supported data elements

📘

Note

Investments product responses vary by account category.

Calls to this endpoint for annuity, deposit, insurance, line of credit, or loan account categories return data included in the Balances product.

All account categories

include:

NameRequiredDescription
account infotrueIncludes account info data elements
balancestrueIncludes balances data elements

Investment accounts

may also include:

NameTypeDescription
holdings[holding]Array of holdings
openOrders[openOrder]Array of open orders
contribution[contribution]Describes how new contributions are distributed among the available securities
vesting[vesting]Provides the past, present, and future vesting schedule and percentages
investmentLoans[investmentLoan]Array of investment loans
pensionSource[pensionSource]Array of Pension Source
equityGrants[equityGrants]Array of equity grants

Holding

NameTypeDescription
anonymousobjectnone
assetClassesarrayPercent breakdown by asset class.
assetClasses.assetClassstringnone
assetClasses.percentnumberPercentage of asset class that falls under this asset
averageCostbooleanCost is average of all purchases for holding.
cashAccountbooleanIf true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account.
changeInPricenumberChange in current price compared to previous day's close
currency[currency]none
currentUnitPricenumbernone
currentUnitPriceDatestring(date-time)Current unit price as of date
debtSecurityobject [debtSecurity]Information about the security specific to the type of security
debtSecurity.parValuenumberPar value amount
debtSecurity.debtTypestringDebt type. COUPON, ZERO.
debtSecurity.debtClassstringClassification of debt. TREASURY, MUNICIPAL, CORPORATE, OTHER.
debtSecurity.couponRatenumberBond coupon rate for next closest call date
debtSecurity.couponDatestring(date-time)Maturity date for next coupon
debtSecurity.couponMatureFrequencystringWhen coupons mature. MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER.
debtSecurity.callPricenumberBond call price
debtSecurity.yieldToCallnumberYield to next call
debtSecurity.callDatestring(date-time)Next call date
debtSecurity.callTypestringType of next call. CALL, PUT, PREFUND, MATURITY.
debtSecurity.yieldToMaturitynumberYield to maturity
debtSecurity.bondMaturityDatestring(date-time)Bond Maturity date
descriptionstringDescription of the holding
expirationDatestring(date-time)For CDs, bonds, and other time-based holdings.
faceValuenumberRequired for bonds. Face value at the time of data retrieved.
fiAssetClassesarrayPercent breakdown by FI-specific asset class percentage breakdown
fiAssetClasses.assetClassstringFI-specific asset class
fiAssetClasses.percentnumberPercentage of asset class that falls under this asset
fiAttributesarray [fiAttribute][Data provider-specific attribute]
heldInAccountstringSub-account
holdingIdstringLong term persistent identity of the holding
holdingNamestringHolding name or security name
holdingSubTypestringnone
holdingTypestringnone
inv401kSurcestringSource for money for this security.
marketValuenumberMarket value at the time of data retrieved
mutualFundSecurityobject [mutualFundSecurity]Information about the security specific to the type of security
mutualFundSecurity.mutualFundTypestringMutual fund type. OPENEND, CLOSEEND, OTHER.
mutualFundSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
mutualFundSecurity.unitsUsernumberUnits in user's name directly, positive quantity
mutualFundSecurity.reinvestDividendsbooleanReinvest dividends
mutualFundSecurity.reinvestCapitalGainsbooleanReinvest capital gains
mutualFundSecurity.yieldnumberCurrent yield reported as portion of the fund's assets
mutualFundSecurity.yieldAsOfDatestring(date-time)As-of date for yield value
originalPurchaseDatestring(date-time)Date of original purchase
optionSecurityobject [optionSecurity]Information about the security specific to the type of security
optionSecurity.securedstringHow the option is secured. NAKED, COVERED.
optionSecurity.optionTypestringPUT or CALL
optionSecurity.strikePricenumberStrike price / Unit price
optionSecurity.expireDatestring(date-time)Expiration date of option
optionSecurity.sharesPerContractnumberShares per contract
otherSecurityobject [otherSecurity]Information about the security specific to the type of security
typeDescriptionstringDescription of Other Security. Required if otherSecurity is included
positionTypestringLONG, SHORT.
purchasedPricenumberPrice of holding at the time of purchase
ratenumberFor CDs, bonds, and other rate based holdings.
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type
stockSecurityobject [stockSecurity]Information about the security specific to the type of security
stockSecurity.unitsStreetnumberUnits in the FI's street name, positive quantity
stockSecurity.unitsUsernumberUnits in user's name directly, positive quantity
stockSecurity.reinvestDividendsbooleanReinvest dividends
stockSecurity.stockTypestringCOMMON, PREFERRED, CONVERTIBLE, OTHER
stockSecurity.yieldnumberCurrent yield
stockSecurity.yieldAsOfDatestring(date-time)Yield as-of date
sweepSecurityobject [sweepSecurity]Information about the security specific to the type of security
sweepSecurity.currentBalancenumberBalance of funds in account
sweepSecurity.availableBalancenumberBalance of funds available for use
sweepSecurity.balanceAsOfstring(date-time)As-of date of balances
sweepSecurity.checksbooleanWhether or not checks can be written on the account
symbolstringTicker / Market symbol
taxLotsarray [object]Breakdown by tax lot.
taxLots.costBasisnumberTotal amount of money spent acquiring this lot including any fees or commission expenses incurred.
taxLots.currentValuenumberLot market value
taxLots.originalPurchaseDatestring(date-time)Lot acquired date.
taxLots.postionTypestringLONG, SHORT.
taxLots.purchasedPricenumberOriginal purchase price.
taxLots.quantitynumberLot quantity.
unitsnumberRequired for stock, mutual funds. Number of shares (with decimals).

Contribution

NameTypeDescription
securityIdstringUnique identifier of security
securityIdTypestringSecurity identifier type CUSIP, ISIN, SEDOL, SICC, VALOR, WKN
employerMatchPercentagenumberEmployer contribution match percentage
employerMatchAmountnumberEmployer contribution match amount
employeePreTaxAmountnumberEmployee pre‐tax contribution amount
employeePreTaxPercentagenumberEmployee pre‐tax contribution percentage
employeeAfterTaxAmountnumberEmployee after tax contribution amount
employeeAfterTaxPercentagenumberEmployee after tax contribution percentage
employeeDeferPreTaxAmountnumberEmployee defer pre‐tax contribution match amount
employeeDeferPreTaxPercentagenumberEmployee defer pre‐tax contribution match percentage
employeeYearToDatenumberEmployee total year to date contribution
employerYearToDatenumberEmployer total year to date contribution
rolloverContributionPercentagenumberRollover contribution percentage
rolloverContributionAmountnumberRollover contribution Amount

EquityGrants

NameTypeDescription
grantIdstringUnique identifier of grant.
grantDatestring(date-time)Date grant was given.
grantTypestringType of grant.
seqNumnumberSequence number.
grantPricenumberGrant price.
grantCurrencyCodestringIndicates the currency of grant USD vs AUD vs EUR, etc. (for share awards, you will still get a USD).
quantityGrantednumberNumber of options.
quantityOutstandingnumberOutstanding quantity.
expirationDatestring(date-time)Date grant expires.
vestingsarrayAn array of equityGrant.vestings. Provides the past, present, and future vesting schedule and percentages.
vestings.vestedQuantitynumberVested quantity (Vested shares total qty of vesting tranche)
vestings.vestedValuenumberVested balance at grant (aggregate of all vestings).
vestings.vestingDatestring(date-time)Vesting date
vestings.vestExpireDatestring(date-time)Expiration date, i.e., forfeited unless exercised by this date
vestings.vestedStatusstringValid, active, or cancelled

InvestmentLoan

NameTypeDescription
loanIdstringUnique identifier for this loan
loanDescriptionstringDescription
initialLoanBalancenumberInitial loan balance amount
loanStartDatestring(date-time)Start date of the loan
currentLoanBalancenumberCurrent loan principal balance amount
dateAsOfstring(date-time)Date and time of current loan balance
loanRatenumberLoan annual interest rate for the loan
loanPaymentAmountnumberLoan payment amount
loanPaymentFrequencystringWEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER.
loanPaymentInitialnumberInitial number of loan payments
loanPaymentsRemainingintegerRemaining number of loan payments
loanMaturityDatestring(date-time)Expected loan end date
loanInterestToDatenumberTotal interest paid to date on this loan
loanTotalProjectedInterestnumberTotal projected interest to be paid on this loan
loanNextPaymentDatestring(date-time)The next payment date for the loan

OpenOrder

NameTypeDescription
orderIdstringLong term persistent identity of the order. Id for this order transaction.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type. CUSIP, ISIN, SEDOL, SICC, VALOR, WKN.
symbolstringMarket symbol
descriptionstringDescription of order
unitsnumbernumber of units (shares or bonds etc)
orderTypestringBUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE.
orderDatestring(date-time)Order date
unitPricenumberUnit price
unitTypestringSHARES, CURRENCY.
orderDurationstringThis order is good for DAY, GOODTILLCANCEL, IMMEDIATE
subAccountstringCASH, MARGIN, SHORT, OTHER.
limitPricenumberLimit Price
stopPricenumberStop price
inv401kSourcestringFor 401(k) accounts, source of money for this order. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST. Default if not present is OTHERNONVEST.

PensionSource

NameTypeDescription
displayNamestringName of the Source
amountnumberBenefit Amount
paymentOptionstringForm of payment
asOfDatestring(date-time)Date benefit was calculated
frequencystringAllowed values: ANNUALLY, BIWEEKLY, DAILY, MONTHLY, SEMIANNUALLY, SEMIMONTHLY, WEEKLY
startDatestring(date-time)Assumed retirement date ‐ As of date amount is payable

Vesting

NameTypeDescription
vestingDatestring(date-time)Vesting date
symbolstringSecurity symbol
strikePricenumberStrike price
vestingPercentagenumberVesting percentage
otherVestAmountnumberOther vest amount
otherVestPercentagenumberOther vest percentage
vestedBalancenumberVested balance
unVestedBalancenumberUnvested balance
vestedQuantitynumberVested quantity
unVestedQuantitynumberUnvested quantity

consent flow improvements mandatory claims

Akoya is committed to providing a superior customer experience—that means ensuring optimal data access performance for everyone on the network.

To continue reaching our shared performance and compatibility goals, we’re making a change to how we authorize end-users and generate tokens by moving data recipients to a new token identity provider (IdP). The new IdP will improve Akoya’s network performance and will offer more flexibility with scoped client credentials and token life cycles.

Akoya will fully manage the migration of recipients from our existing IdP to the new one in a gradual, phased approach starting in our Sandbox.

A beta release is expected in our production environment in Q3 2023, but official timelines will be communicated in another announcement. This is still to be determined.

📘

If you feel this change will necessitate Akoya assistance, please reach out to your assigned Customer Success Manager.

What’s changing?

The Akoya authorization URL and Token API responses should not have substantive changes that would impact your implementation. The changes to note will be in the ID token (a JSON Web Token). There will be additional standard JWT claims and new custom Akoya claims.

❗️

Do you currently use the claims in the ID token?

If the answer is “yes” and your claims extraction is tightly coupled to the available claims and its structure, then the Akoya token and/or this update will impact you. Please reach out to your Akoya Customer Success Manager.

📘

If you do not use claims in the Id token, these improvements should not require action by you.

Versioning

For all parts of the consent flow—including the authorization URL, token responses, and JWT claims—please plan for non-breaking changes as Akoya continues to improve its network.

The following are non-breaking changes that may occur in this and future consent flow improvements:

  • Addition of net-new claims in the id token
  • Changes to the order of claims in the id token
  • Changes to the length or format of opaque strings, such as resource IDs

For more on versioning, see: Versioning

Akoya ID JWT Claims

The following claim types will be optionally supported by Akoya. As per our Versioning guidelines, allow for additions as Akoya may add claims for future offerings.

Mandatory Claims

  • connectorId - Akoya claim which lists the provider id
  • recipientId - Akoya recipient id
  • products - Akoya products permissioned by the end-user
  • name - End-user's name in displayable form
  • sub - Unique value to identify the end-user with the scope specific to the data provider.
  • iss - Issuer identifier, Akoya URL
  • exp - Time token will expire in Unix Epoch format
  • iat - Time the JST was issued in Unix Epoch format
  • aud - Data recipient (GUID)

Optional Claims

  • accounts - Akoya claim which lists the accounts permissioned by the end-user. This claim is OPTIONAL and will not always be present

The above list is not exhaustive. For more on standard claims: see the JSON Web Token Claims specification.

Example Id Token

The following example uses mikomo_6 in the Sandbox.

{ "accounts": [ "1700080179", "722148112", "1506439401", "1931314440", "1764334283", "1048765182", "1051344706", "1563794797" ], "at_hash": "EXwZWGTuJoikPMZZpLYnpg", "aud": [ "2157df70-e971-4dab-bb86-b9eb7ab5c4b6" ], "auth_time": 1689794649, "connectorId": "mikomo", "exp": 1689881094, "iat": 1689794694, "iss": "https://sandbox-sts.ddp.akoya.com", "jti": "66d2f82d-e0b5-4ed0-a6d6-750a222c4e66", "name": "mikomo_6", "products": [ "provider_mikomo", "global", "provider_mikomo" ], "rat": 1689794644, "recipientId": "fintech_app", "sid": "fdeb202f-c8aa-4590-b36f-ecfd2ba02860", "sub": "CghtaWtvbW9fNhIGbWlrb21v" }

pagination next page request

When dealing with large sets of data, receiving results in segments can help apps process information in a more structured way. This retrieval of data, a page at a time, is called pagination.

The /transactions endpoint will standardize on link-based pagination with Akoya API v2.

Consider the following when implementing link-based pagination.

1️⃣ First request

When making an initial transaction call, create the request with the following parameters. The result of that first request will return links to use for paging.

Parameters

These parameters should only be used in constructing the first transaction call. After the first call, requesting pages must be done with links provided in results.

Some data providers may not support offset or limit. Please check the Data Recipient Hub for specific provider documentation for details on pagination support.

  • offset - The number of items to skip before the first in the response
  • limit - The maximum number of items to be returned in the response
  • startTime - ISO 8601 date format in UTC time zone. Example: 2020-03-30T04:00:00Z
  • endTime - ISO 8601 date format in UTC time zone. Example: 2021-03-30T04:00:00Z

📘

Use of the offset parameter

When using Akoya’s link-based pagination, we recommend omitting the offset parameter in the initial transaction call.

Request

Example

The following example uses our sandbox and the following parameter values in the original transactions request:

  • providerId = Mikomo
  • accountId = g833202fb0866d0ad83472c429
  • limit = 5
  • startTime = 2019-02-26T00:00:00Z
  • endTime = 2021-02-26T00:00:00Z
curl --location --request GET 'https://sandbox-products.ddp.akoya.com/transactions/v2/mikomo/g833202fb0866d0ad83472c429?startTime=2019-02-26T00:00:00Z&endTime=2021-02-26T00:00:00Z&limit=5' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{idToken}}

Response

Example response with paging

The value of links.next.href may contain the offset, limit, start time, and end time parameters. You should not change these values and use the link as provided.

{ "links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }, "transactions": [ { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -449.07, "checkNumber": 31505, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000030", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -4000.4, "checkNumber": 31528, "description": "CHECK", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000020", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": 5048.13, "description": "DEPOSIT", "postedTimestamp": "2019-07-08T00:00:00Z", "status": "POSTED", "transactionId": "30191890000010", "transactionTimestamp": "2019-07-08T00:00:00Z", "transactionType": "DEPOSIT" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -8.6, "checkNumber": 31530, "description": "CHECK", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000030", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } }, { "depositTransaction": { "accountId": "g833202fb0866d0ad83472c429", "amount": -42.94, "checkNumber": 31525, "description": "CHECK##TRANINITDATE# 07/09", "postedTimestamp": "2019-07-09T00:00:00Z", "status": "POSTED", "transactionId": "30191900000020", "transactionTimestamp": "2019-07-09T00:00:00Z", "transactionType": "CHECK" } } ] }

Example without pagination

If all data can be returned without paging, the links.next.href values will be empty. There is no additional data to page through.
Example with sandbox user mikomo_10, accountId = "5426873"

{ "links": { "prev": { "href": "/transactions/v2/mikomo/5426873?endTime=2021-05-19T00%3A00%3A00Z&limit=50&offset=0&startTime=2021-05-16T00%3A00%3A00Z" } }, "transactions": [ { "investmentTransaction": { "accountId": "5426873", "amount": -30000, "commission": 0, "debitCreditMemo": "DEBIT", "description": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "fees": 0, "fractionalCash": 0, "memo": "CHASE DEPOSIT SWEEP JPMORGAN CHASE BANK NA INTRA-DAY DEPOSIT", "positionType": "LONG", "postedTimestamp": "2021-05-17T00:00:00Z", "securityId": "QACDS", "securityIdType": "SYMBOL", "status": "POSTED", "subAccountFund": "CASH", "subAccountSec": "CASH", "symbol": "QACDS", "transactionId": "TX-300000020210517#20210517--1321227038", "transactionTimestamp": "2021-05-17T00:00:00Z", "transactionType": "PURCHASED", "transferAction": "OUT", "unitPrice": 0, "units": 30000 } } ] }

2️⃣ Second request

Use the links.next.href value in the first response payload to construct the next call.

Do not change the link. Changes to offset, startTime, endTime, or limit in the provided link may cause errors or missing data.

For example, in the first response, links.next.href was returned as:

"links": { "next": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=5&startTime=2019-02-26T00%3A00%3A00Z" }, "prev": { "href": "/transactions/v2/mikomo/g833202fb0866d0ad83472c429?endTime=2021-02-26T00%3A00%3A00Z&limit=5&offset=0&startTime=2019-02-26T00%3A00%3A00Z" } }

Next page request

To request the next page, use the links.next.href value in the GET request:

curl --location --request GET 'https://{access_url}{{links.next.href}} \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer {{idToken}}'

Previous page request

Most pagination responses will include links.prev.href. It may be used to page back to previous results. However, a small number of providers do not support prev. Check the Data Recipient Hub for specific provider documentation for details on pagination support. If prev is not supported and your app requires it, store the next links as the user pages.

3️⃣ Ongoing requests

Continue to make requests using the provided links until next is no longer returned in the response.


transactions investment transactions

Historical and current transactions, transaction types, amounts, dates and descriptions. May be included with all account categories except annuityAccount.

Results for transactions are returned in JSON in FDX format.

Endpoint: /transactions

API documentation: https://docs.akoya.com/v2/reference/get-transactions

Example response

{ "transactions": [ { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000020", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-10T00:00:00Z", "description": "Manual banking 11/25", "status": "POSTED", "amount": -51.74, "transactionType": "TRANSFER" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203300000010", "postedTimestamp": "2020-11-25T00:00:00Z", "transactionTimestamp": "2020-09-11T00:00:00Z", "description": "Manual banking", "status": "POSTED", "amount": 51.74, "transactionType": "POSCREDIT" } }, { "depositTransaction": { "accountId": "5242702", "transactionId": "0203180000010", "postedTimestamp": "2020-11-13T00:00:00Z", "transactionTimestamp": "2020-11-13T00:00:00Z", "description": "MOBILE PMT 3B3RTMQZBN3TOXG WEB ID: 8369744980", "status": "POSTED", "amount": -200, "transactionType": "POSDEBIT" } } ] }

Supported data elements

📘

Note

Transaction responses vary by account category.

All account categories

may include:

NameTypeDescription
accountIdstringCorresponds to accountId in Account Info, Balances, and Investments responses.
amountnumberThe amount of money in the account currency.

If balanceType is ASSET:

1. If debitCreditMemo = DEBIT, sign is "+" or not present
2. If CREDIT, sign is "-"

If balanceType is LIABILITY:

1. If debitCreditMemo = DEBIT, sign is "-"
2. If CREDIT, sign is "+" or not present
categorystringTransaction category, preferably MCC or SIC.
debitCreditMemostringThe posting type of a transaction
descriptionstringThe description of the transaction
imageIds[string]Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt.
fiAttributes[fiAttribute]Array of FI-specific attributes
foreignAmountnumberThe amount of money in the foreign currency
foreignCurrencystringThe ISO 4217 code of the foreign currency
lineItem[lineItem]Breakdown of the transaction details
links[hateoasLink]Links (unique to this Transaction) used to retrieve images of checks or transaction receipts, or invoke other APIs
memostringSecondary transaction description
postedTimestampstring(date-time)The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
referencestringA tracking reference identifier
referenceTransactionIdstringFor reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
statusstringAUTHORIZATION, MEMO, PENDING, or POSTED
subCategorystringTransaction category detail
transactionIdstringLong term persistent identity of the transaction (unique to account).
Transaction IDs should:

1. be the same for pending and posted
2. be different for reversed transactions
3. referenceTransactionId should be present for reversed transactions'
transactionTimestampstring(date-time)The date and time that the transaction was added to the server backend systems.

Deposit transactions

may also include:

NameTypeDescription
payeestringPayee name
checkNumberintegerCheck Number
transactionTypestringdepositTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Insurance transactions

may also include:

NameTypeDescription
transactionTypestringinsuranceTransaction type: PAYMENT, FEE, ADJUSTMENT, INTEREST

Investment transactions

may also include:

NameTypeDescription
accruedInterestnumberAccrued Interest.
commissionnumberTransaction commission.
confirmationNumberstringConfirmation number of the transaction.
faceValuenumberCash value for bonds.
feesnumberFees applied to the trade.
fractionalCashnumberCash for fractional units (used for stock splits).
gainnumberFor sales.
incomeTypestringType of investment income. CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC.
inv401kSourcestringSource of money.
loadnumberLoad on the transaction.
loanIdstringFor 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
loanInterestnumberHow much loan pre-payment is interest.
loanPrincipalnumberHow much loan pre-payment is principal.
markupnumberPortion of unit price that is attributed to the dealer markup.
newUnitsnumberNumber of shares after split.
oldUnitsnumberNumber of shares before split.
payrollDatestringThe date for the 401k transaction was obtained in payroll.
penaltynumberIndicates amount withheld due to a penalty.
positionTypestring
pricenumberUnit purchase price.
priorYearContribbooleanIndicates this buy was made using prior years contribution. TRUE or FALSE.
runningBalancenumberRunning balance of the position.
securityIdstringUnique identifier of security.
securityIdTypestringSecurity identifier type.
securityTypestring
sharesnumberRequired for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
splitRatioDenominatornumberSplit ratio denominator.
splitRatioNumeratornumberSplit ratio numerator.
stateWithholdingnumberState tax withholding.
subAccountFundstringFrom which account money came in.
subAccountSecstringSub-account security type.
symbolstringTicker symbol.
taxesnumberTaxes on the trade.
taxExemptbooleanTax-exempt transaction TRUE or FALSE.
transactionReasonstringReason for this transaction; CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
transactionTypestringinvestmentTransaction type: PURCHASED, SOLD, PURCHASEDTOCOVER, ADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, DEPOSIT, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
transferActionstringTransfer direction.
unitPricenumberPrice per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
unitsnumberFor security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
unitTypestring
withholdingnumberFederal tax withholding.

Line of credit transactions

may also include:

NameTypeDescription
checkNumberintegerCheck number
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringlocTransaction type: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT, INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT

Loan transactions

may also include:

NameTypeDescription
paymentDetails[paymentDetails]Payment details for some transactions
paymentDetails.escrowAmountnumberThe amount of payment applied to escrow
paymentDetails.feesAmountnumberThe amount of payment applied to fees
paymentDetails.insuranceAmountnumberThe amount of payment applied to life/health/accident insurance on the loan
paymentDetails.interestAmountnumberThe amount of payment applied to interest
paymentDetails.pmiAmountnumberThe amount of payment applied to PMI
paymentDetails.principalAmountnumberThe amount of payment applied to principal
transactionTypestringloanTransaction type: ADJUSTMENT, FEE, INTEREST, PAYMENT

mikomo provider data

The Akoya sandbox allows you to make calls to Akoya APIs for tokens and data.

Every data request in the Data Access Network requires an ID token. To test in sandbox, you must log in as a user and complete the account selection and consent flow process to retrieve an ID token. Akoya has provided a mock data provider for your testing use.

Mikomo Financial

Mikomo Financial, the Akoya mock data provider, is the only provider available in sandbox. Mikomo includes a test library with representative samples from various data providers. The data available from these users is detailed in the Catalog below.

We recommend using Postman for testing. For more information on using Postman, see: Postman collection

Sandbox requires the following parameters for Akoya API v2:

ParameterValue
client_id, client_secret, redirect_uriyour variable values
connector
note: the connector parameter is the same as the providerId
mikomo
idp_urlsandbox-idp.ddp.akoya.com
permission_urlsandbox-permission.api.ddp.akoya.com
products_urlsandbox-products.ddp.akoya.com
providerIdmikomo

Catalog

Mikomo users are created with static, example response payloads. These payloads are representative and can be used to understand the type of data you may receive through the Data Access Network. Sandbox accounts may also be used for your integration and testing needs. For testing support, we’ve included a variety of Akoya products, provider accounts types, account statuses, transaction loads, and error states.

Note: for all test users, the username and password are the same.

All supported data elements

The mikomo_7 user includes all account categories and data elements available through the Data Access Network.
(See details below)

Products

If you need to test Akoya products with Mikomo users, this chart is a quick way to determine which user might work for you. This chart also includes additional scenario information you might need for integration/testing use.

ProductUserScenario
Balancesmikomo_10 Checking: g833202fb0866d0ad83472c429Non-zero balance
mikomo_10 Checking: 5dbda8de96eeff05f23934523a1fc258Zero balance
Investmentsmikomo_3Includes 38 generic investment accounts. Includes examples of holdings data.
Transactionsmikomo_2023For pagination and date filtering. Includes recent checking account transactions.
Payment networksmikomo_10 Checking: g833202fb0866d0ad83472c429 Savings: 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1dUser has two accounts with payment information
Customer infomikomo_10To view customer info. This data has no telephone number, for implementation when certain data is not included.
Statementsmikomo_11To view account ID, statement list, statement image, and account description

Account types

While there are a number of account types supported by our data providers, this chart includes a selection of account types for your reference. A sample of other account types are listed by Mikomo user below.

Account typeUserScenario
Checkingmikomo_1No checking accounts For use in scenarios to understand when a user doesn’t have a specific account type.
529 College Savingsmikomo_10Account 839502593 with 22 transactions
Brokeragemikomo_10Account 5426873 with 4 transactions
CDmikomo_10Account 11719ae5-2399-1278-e43c-43f24abb3058

Account details

mikomo_1

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, TODIIndividual (20): 1755209824

mikomo_2

8 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, I, TODIHSA (20): 474362798

mikomo_3

38 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: I, IRRL, TIC, IRAB, IRA, TODJ, ROTH, TODI, 401KIndividual (20): 1377569312

mikomo_5

3 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: J, HSA, ROTHHSA (8): 1221963501

mikomo_6

10 accounts

Account typesTransactions
accountType (Number of transactions): accountId
Investment: HSA, TODI, IRA, IRRL, NONP, NRMA, 401knone

mikomo_7

5 accounts

Includes:

  • customers
  • paymentNetworks
    • account 1602364511
Account categoryAccount typeAccount number
depositAccountCHECKING1602364511
loanAccountCOMMERCIALLOAN1316072226
locAccountCREDITCARD1417522980
investmentAccount401(k) PLAN1222577818
insuranceAccountJ1254778531

mikomo_9

1 account

Includes:

  • customers
  • paymentNetworks
    • account 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429
Account typesTransactions
accountType (Number of transactions): accountId
depositAccount: CheckingChecking (1360): 47320722f1e9340a8f8ead1e38bdbc215b0866d0ad83472c6777923499a74429

mikomo_10

6 accounts

Includes:

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429[1360] transactions availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions
investmentAccount: BROKERAGE 5426873[4] transactions
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions

mikomo_11

1 account

Includes:

  • paymentNetworks
  • customers
  • statements
Account types/accountIdScenario
depositAccount: Checking 513815781465 (x1465)[0] transactions availableBalance: 7869.13
[1] statements

mikomo_2023

6 accounts

This Mikomo user was created for testing the transactions endpoint. The g833202fb0866d0ad83472c429 checking account should always return recent transactions and has several months of history for testing pagination and date filtering. All of the mikomo_2023 accounts are generic (not provider-specific) and are detailed below.

  • customers
  • paymentNetworks
    • account g833202fb0866d0ad83472c429
    • account 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d
Account types/accountIdScenario
depositAccount: Checking g833202fb0866d0ad83472c429Number of transactions vary by date. Should have a result using default 15-day call. availableBalance: 106717.06
depositAccount: Checking 5dbda8de96eeff05f23934523a1fc258[0] transactions availableBalance: 0
investmentAccount: College Savings 839502593[22] transactions. Oldest date: 2023-01-03T05:00:00ZZ
investmentAccount: BROKERAGE 5426873[4] transactions. Oldest date: 2023-05-17T00:00:00Z
depositAccount: CD 11719ae5-2399-1278-e43c-43f24abb3058[0] transactions
depositAccount: SAVINGS 33fbd9e5-9cc3-3d7d-15b3-70d97d87ca1d[4] transactions. Oldest date: 2023-01-27T00:00:00.000Z

Provider data

📘

Notice

Representative test users are created with live data from each data provider and collected through the Data Access Network. However, this sample data does not include all possible responses.

To find more information on test users, refer to each data provider's documentation section in the Data Recipient Hub.

Error testing

Some errors are difficult to replicate. For instance, there is no way for you to revoke an end-user’s consent via their bank’s app or website to test the errors that would result in your app. When data is requested for these users, the result will always be an error.

To test with these Mikomo users, go through the consent flow as usual to obtain an ID token. Then, any data call will result in the errors listed below.

Note: username and password are the same.

user/pwderror typemessage
mikomo_500500Internal server error
mikomo_501501Subsystem unavailable
mikomo_601601Customer not found
mikomo_602602Customer not authorized
mikomo_701701Account not found
mikomo_702702Invalid start or end date
mikomo_703703Invalid date range
mikomo_704704Account type not supported

Change log

DateUpdate
2023-Aug-23Added required params for Akoya API v2; removed reference to v1; added Statements and a reference to mikomo_11 in the Products table.
2022-Oct-21Updated “Error testing” section with new mikomo_704 user.
2022‑Jun‑13Updated document for clarification, added Catalog section to detail use cases, and added reference for new user, mikomo_10

hub manual team management configuring mfa

The Team management section is where you can add, delete, and reset passwords on Akoya-hosted accounts. You can also edit company details, set a logo, and more.


📘

Federated accounts are managed via your IDP

While you will be able to view users who currently have Hub access in Team management, all CRUD operations and access management are handled on your end.

All topics on this page refer only to Akoya-hosted accounts unless specified otherwise.


User management for federated accounts is managed with your IDP. You'll be able to view users who have Hub access.

User roles

Currently, only the admin role is available to Akoya-hosted accounts. If you're using federated accounts to access the Hub, a viewer role is also available.

Adding users

The account you use to sign up with Akoya will be your company’s first user. Afterward, you can set up users from the Team management section or by clicking your company name at the bottom of the navigation pane (both links take you to Team management).

Team management section
Team management section

Click the “Invite user” button, enter the name and email for the new user, and click the “Invite” button.

Invite a new user.
Invite a new user.

Click 'invite' to send an email.
Click "invite" to send an email.

📘

The name field is free text

You can enter a first name and last name, a first name only, or whatever other naming convention is appropriate for you or your organization.


When you click invite, the user will receive an invitation email with further instructions to set up their account.


🚧

The email invite link expires in 10 days!

If the new user hasn’t completed the initial login by then, you’ll need to delete/recreate the user to generate a new invite.


After setting your password, you’ll be taken to the multi-factor authentication (MFA) setup screen. Setting up MFA is mandatory for Hub accounts.

Deleting users

To remove a user, click the trash can icon next to the user you want to delete.

Click the trash can to delete a user.
Click the trash can to delete a user.

Resetting passwords


📘

Note

You can only reset your own password.


  1. Click the pencil icon on the right:
Click the pencil to reset your password.
Click the pencil to reset your password.
  1. Enter your new password twice in the fields indicated and click "Update."

Edit profile display name

You can update your display name by following the same process as a password reset. Click on the pencil icon next to your name (as shown above), edit the name field, and click "Update."

Configuring MFA

After setting your password, you’ll be presented with the following screen to set up MFA. You can either use a software authenticator app (i.e. Google Authenticator) or a hardware security key.

You can set up MFA with a software authenticator or a security key.
You can set up MFA with a software authenticator or a security key.

Method 1 - Google Authenticator or similar

The following authentication apps are supported:

  • Google Authenticator
  • Duo
  • Authy

Scan the QR code and enter the six-digit code to finish the setup. The QR code in the example is blurred for security reasons.

Authenticator app QR code
Authenticator app QR code

A recovery code will display on the next screen. This code will allow you to log into your account without your device. Record this code in a safe place. Check the box indicating that you’ve saved your code and click “Continue.”

Store your recovery code in a safe place
Store your recovery code in a safe place

Method 2 - Security key


📘

Note

We recommend using Chrome or Safari to register your security key with the Hub.


🚧

Exact procedure may vary!

The exact steps to register your device may vary depending on the specific device you’re using. The following section should be used as a guide only.


If you select the security key option, you’ll be taken to the following screen. Click “Use security key” and insert your device when prompted. You may also be asked to enter a pin to unlock your device.

Add security key
Add security key

Insert key to continue
Insert key to continue

Name your device and save your recovery code somewhere safe. You can use this code to log in if you ever lose your security key or need to log in without it. Click “Continue” when finished.

Name your device
Name your device

Store your recovery code in a safe place
Store your recovery code in a safe place

If you reach this screen, you’ve successfully configured your security key. When you click “Continue,” you’ll be taken to the Hub overview page.

Successful registration
Successful registration

Biometric login


📘

We won't cover specific device instructions here

Due to the wide variety of biometric devices on the market, we will only cover registration from the Akoya side here. Please refer to your device’s instruction manual for further setup instructions or troubleshooting.


After you configure MFA, you’ll have the option of configuring biometric login (fingerprint or face recognition) if your device supports it.

Biometric login option
Biometric login option

Click “Continue” if you want to set up biometric login and follow the prompts. Otherwise, select “Remind me later” or “not on this device” as appropriate.

Troubleshooting MFA

You lost access to your MFA app or security key

If you lose access to your authenticator device/app, you’ll need to use your recovery code to log in. At the “Verify your identity” screen, click the “Try another method” link and select “Recovery code.”

Click “Try another method” to use the recovery code option
Click “Try another method” to use the recovery code option

Click “Recovery code” to proceed
Click “Recovery code” to proceed

Enter your recovery code and click “Continue.” You’ll be given a NEW recovery code to use moving forward. Be sure to record this code in a safe place and click “Continue.” You’ll be taken to the Hub Overview page.

If you don’t have the recovery code, please have a team member delete your account and re-invite you (see Deleting users). You will receive a new invite via email. Follow the instructions above to accept the invitation and configure MFA.

If your account is the only one in the Hub, please contact support.


🚧

Delete old MFA entries for the Hub in your authenticator app/security key

When your Hub account is recreated, the old “Recipient Hub” entry will no longer work. Delete it before setting up your account again.


Edit company details

The "Edit company details" page is available for both types of Hub accounts and allows you to modify the following attributes:

  • company display name
  • company description
  • primary logo URL
    • We recommend using your full logo. We use this image for your end-user consent page.
    • Accepted width & height: 240px - 1024px (square or rectangular)
    • Accepted file types: transparent PNG or JPG
  • icon/avatar URL
    • We recommend using a sub-mark logo. We use this image as an avatar for your company in the Hub.
    • Accepted size: 20px - 200px (square)
    • Accepted file types: transparent PNG or JPG
  • contact URL
    • This is your company's "Contact us" page.
  • support email(s)
    • Separate multiple addresses with commas. Technical support notifications will go to these email addresses.
  1. Click the "Edit profile" button next to your company's name. An update screen will appear.
You can edit all company details from the edit profile screen.
You can edit all company details from the edit profile screen.
  1. When you're finished with your updates, click the "Update" button at the bottom.